space usage of NULL fields

Started by Jan Vicherekabout 27 years ago2 messages
#1Jan Vicherek
honza@ied.com

Hello,

a quick question (I couldn't contact postgresql.org, so I didn't check
the FAQ, but I doubt it would be there.)

When I create a table with field "nnn float8" and total row size, say
140 bytes, and then I insert a row with NULL in this field, will my record
take up those 8 bytes in physical page (say 140 bytes) or will it take up
less (like 140-8=132), i.e. will it be shortened by those 8 bytes, since
the value is NULL and no information is stored in that field ? ( I *hate*
run-on sentences :)

In general, what are the savings/overheads associated in PG with
NULL/not NULL fields ? I.e. if will I save the space if I define the field
as varchar(8) instead of float8 ?

Thanx,

Jan

-- Gospel of Jesus is the saving power of God for all who believe --
## To some, nothing is impossible. ##
http://Vicherek.Waterloo.on.ca/

#2Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Jan Vicherek (#1)
Re: [HACKERS] space usage of NULL fields

Hello,

a quick question (I couldn't contact postgresql.org, so I didn't check
the FAQ, but I doubt it would be there.)

When I create a table with field "nnn float8" and total row size, say
140 bytes, and then I insert a row with NULL in this field, will my record
take up those 8 bytes in physical page (say 140 bytes) or will it take up
less (like 140-8=132), i.e. will it be shortened by those 8 bytes, since
the value is NULL and no information is stored in that field ? ( I *hate*
run-on sentences :)

Shorter. Nulls are not stored in the row. There is a bitmask on every
row that shows the number of NULL fields.

In general, what are the savings/overheads associated in PG with
NULL/not NULL fields ? I.e. if will I save the space if I define the field
as varchar(8) instead of float8 ?

no. float8 is shorter because varchar has 4-byte overhead. The faq is
in docs/FAQ too.

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026