Re: Reduce per tuple overhead (bitmap)
От | Bruce Momjian |
---|---|
Тема | Re: Reduce per tuple overhead (bitmap) |
Дата | |
Msg-id | 200206030423.g534NkU10363@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Reduce per tuple overhead (bitmap) (Manfred Koizar <mkoi-pg@aon.at>) |
Ответы |
Re: Reduce per tuple overhead (bitmap)
(Manfred Koizar <mkoi-pg@aon.at>)
|
Список | pgsql-patches |
I assume this will be safe for 7.3 using 7.2 files via pg_upgrade because those old 7.2 files will just have the longer length, right? --------------------------------------------------------------------------- Manfred Koizar wrote: > This small patch makes the length of the null bitmap a multiple > of 1 byte (has been a multiple of 4 bytes previously), thus saving > MAXIMUM_ALIGNOF (4 or 8 on modern platforms) bytes per on-disk-tuple > in certain cases (depending on number of attributes and if there is > at least one null attribute). > > It passes make check for 7.2 and for cvs HEAD. > > Though it changes the on-disk-format, there's no need to initdb, > because data offsets are stored in t_hoff for each tuple. So this > patch can be applied to HEAD and to the 7.2 branch. > > Servus > Manfred > > > diff -r -u ../orig/src/include/access/htup.h src/include/access/htup.h > --- ../orig/src/include/access/htup.h Mon Nov 5 18:46:31 2001 > +++ src/include/access/htup.h Sun May 5 08:03:29 2002 > @@ -17,7 +17,7 @@ > #include "storage/bufpage.h" > #include "storage/relfilenode.h" > > -#define MinHeapTupleBitmapSize 32 /* 8 * 4 */ > +#define MinHeapTupleBitmapLen 1 /* in bytes, must be 2**n */ > > /* > * MaxHeapAttributeNumber limits the number of (user) columns in a table. > @@ -57,7 +57,7 @@ > > /* ^ - 31 bytes - ^ */ > > - bits8 t_bits[MinHeapTupleBitmapSize / 8]; > + bits8 t_bits[MinHeapTupleBitmapLen]; > /* bit map of NULLs */ > > /* MORE DATA FOLLOWS AT END OF STRUCT */ > @@ -225,8 +225,8 @@ > * Computes minimum size of bitmap given number of domains. > */ > #define BITMAPLEN(NATTS) \ > - ((((((int)(NATTS) - 1) >> 3) + 4 - (MinHeapTupleBitmapSize >> 3)) \ > - & ~03) + (MinHeapTupleBitmapSize >> 3)) > + (((((int)(NATTS) - 1) >> 3) \ > + & ~(MinHeapTupleBitmapLen - 1)) + MinHeapTupleBitmapLen) > > /* > * HeapTupleIsValid > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@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
В списке pgsql-patches по дате отправления: