Further Block B-tree thoughts

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Further Block B-tree thoughts
Дата
Msg-id 452391F9.5060904@enterprisedb.com
обсуждение исходный текст
Список pgsql-hackers
Just to let everyone know, I'm continuing work on the Block B-tree idea 
discussed earlier.

The current plan is to have a (compressed) bitmap of offsets attached to 
index tuples, to allow vacuuming. For example, if we have a heap like this:
 2 4 6 8
-
10
12
14
16
5
-
18
20

where dashes represent page boundaries, the corresponding index would 
look like:

low key -> heap blk no (offsets)      2 -> 1 (1,2)      5 -> 2 (5)      6 -> 1 (3,4)     10 -> 2 (1,2,3,4)     18 -> 3
(1,2)


So each index tuple points to a group of tuples that are located on the 
same page. The grouped tuples have keys in the range "this index key" - 
"next index key", and there's no other tuples with a key in that range. 
On index page boundaries, the high key of the page can be used instead 
of the next index key to simplify insertion and scanning.

When scanning, index quals need to be rechecked after fetching the heap 
tuples, unless the index tuple pointed to just one heap tuple, or we're 
doing a range scan and both the min and max key of the group are within 
the range. And to do a regular ordered index scan, tuples within a group 
need to be sorted.

The current B-tree is a special case of this design, where each index 
tuple points to a single heap tuple.

At first I thought this would be a new index access method, but it now 
seems that it makes more sense to integrate this with the normal B-tree, 
assuming that the behavior and performance is the same when all index 
tuples point to single heap tuples.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Michael Paesold
Дата:
Сообщение: Re: pgindent has been run
Следующее
От: Zdenek Kotala
Дата:
Сообщение: Re: [PATCHES] DOC: catalog.sgml