Re:

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Francisco Reyes <lists(at)natserv(dot)com>
Cc: pgsql General List <pgsql-general(at)postgresql(dot)org>, Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Subject: Re:
Date: 2002-07-04 18:45:53
Message-ID: 4773.1025808353@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Francisco Reyes <lists(at)natserv(dot)com> writes:
> How much space does "NULL" takes on a varchar.

This is getting to be a FAQ itself --- Bruce, would you like to
add something along the following lines to the FAQ?

Q. How much space does a NULL take?

A. None; it's not stored. However, if a table row contains any NULLs
then it must include a "nulls bitmap" that shows which columns are NULL.
The bitmap has one bit per table column. The bitmap is omitted if the
row contains no NULLs at all. So, in practice the first NULL you put in
a row costs number-of-columns bits. Any additional NULLs in the same
row are completely free as far as storage space is concerned.

Also, the space effectively occupied by the bitmap depends on alignment
considerations, because the total size of the row header and bitmap
will be rounded up to a MAXALIGN boundary (either 4 or 8 bytes on
most hardware). In 7.3 it's likely that a bitmap for a row of up to
8 columns will be completely free, because the rounded-up header size
will be the same with or without it.

regards, tom lane

In response to

  • at 2002-07-04 18:06:31 from Francisco Reyes

Responses

  • Re: at 2002-07-04 19:23:36 from Bruce Momjian

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2002-07-04 18:47:44 Re: repeatable crash generating two column index
Previous Message Neil Conway 2002-07-04 18:43:58 Re: repeatable crash generating two column index