[Bizgres-general] A bitmap index access method is available in
bizgres CVS tip
Mark Kirkwood
markir at paradise.net.nz
Tue Dec 20 00:36:13 GMT 2005
Sam Vilain wrote:
> On Mon, 2005-12-19 at 21:25 +1300, Mark Kirkwood wrote:
>
>>10 value bitmap for 10000000 rows requires 10*10000000/8 = 12500000 (~12Mb).
>>
>>This is quite small (whereas the 10 value bitmap indexes are ~150Mb).
>>
>>To actually use the bitmap you need a map between the bitmap "array"
>>position and blocknumber,itemid (or similar) of the heap relation. I am
>>guessing that is what your "bm_internal_t*" guys do(?). Is this where
>>the extra space is being used? (the on-disk bm_* are very small, so I
>>guess it is not).
>
>
> On Oracle at least, this mapping is only necessary if you are using an
> "index organised table" (I *think* this maps cleanly to the concept of a
> primary unique key in Pg?).
>
Hmmm - the big O's docs are *very* light on bitmap implementation
detail, however they do use a mapping construct - see :
http://www.dbazine.com/oracle/or-articles/jlewis3
Each bitmap block stores a ROWID range that the bitmap run is for (this
being the mapping), the value the index is for, and the bitmap run
itself (possibly with run compression).
For a reasonably readable vendor neutral discussion of bitmap indexes
(and other interesting warehouse ideas) see:
http://www.cs.brown.edu/courses/cs227/Papers/Indexing/O'NeilGraefe.pdf
Cheers
Mark
More information about the Bizgres-general
mailing list