Added to TODO: * Reduce BIT data type overhead using short varlena headers http://archives.postgresql.org/pgsql-general/2007-12/msg00273.php --------------------------------------------------------------------------- Decibel! wrote: > On Dec 5, 2007, at 7:23 PM, Michael Glaesemann wrote: > > On Dec 5, 2007, at 14:19 , Alex Mayrhofer wrote: > >> i'm trying to find out the storage size for bit(n) data. My > >> initial assumption would be that for any 8 bits, one byte of > >> storage is required. > > > > select pg_column_size(B'1') as "1bit", > > pg_column_size(B'1111') as "4bits", > > pg_column_size(B'11111111') as "1byte", > > pg_column_size(B'111111111111') as "12bits", > > pg_column_size(B'1111111111111111') as "2bytes", > > pg_column_size(B'11111111111111111') as "17bits", > > pg_column_size(B'111111111111111111111111') as "3bytes"; > > 1bit | 4bits | 1byte | 12bits | 2bytes | 17bits | 3bytes > > ------+-------+-------+--------+--------+--------+-------- > > 9 | 9 | 9 | 10 | 10 | 11 | 11 > > (1 row) > > > > Looks like there's 8 bytes of overhead as well, probably because a > > bit string is a varlena type. > > Wow, that's screwed up... that's a lot more than varlena overhead: > > select pg_column_size('a'::text), pg_column_size(1::numeric), > pg_column_size(3111234::numeric); > pg_column_size | pg_column_size | pg_column_size > ----------------+----------------+---------------- > 5 | 10 | 12 > > Apparently it's something related to numeric. > -- > Decibel!, aka Jim C. Nasby, Database Architect decibel@xxxxxxxxxxx > Give your computer some brain candy! www.distributed.net Team #1828 > > -- Bruce Momjian <bruce@xxxxxxxxxx> http://momjian.us EnterpriseDB http://postgres.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general