Re: [WIP] Effective storage of duplicates in B-tree index.

Heikki Linnakangas <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.general
Message-ID <[email protected]>
On 04/01/2020 03:47, Peter Geoghegan wrote:
> Attached is v28, which fixes bitrot from my recent commits to refactor
> VACUUM-related code in nbtpage.c.

I started to read through this gigantic patch. I got about 1/3 way 
through. I wrote minor comments directly in the attached patch file, 
search for "HEIKKI:". I wrote them as I read the patch from beginning to 
end, so it's possible that some of my questions are answered later in 
the patch. I didn't have the stamina to read through the whole patch 
yet, I'll continue later.

One major design question here is about the LP_DEAD tuples. There's 
quite a lot of logic and heuristics and explanations related to unique 
indexes. To make them behave differently from non-unique indexes, to 
keep the LP_DEAD optimization effective. What if we had a separate 
LP_DEAD flag for every item in a posting list, instead? I think we 
wouldn't need to treat unique indexes differently from non-unique 
indexes, then. I tried to search this thread to see if that had been 
discussed already, but I didn't see anyone proposing that approach.

Another important decision here is the on-disk format of these tuples. 
The format of IndexTuples on a b-tree page has become really 
complicated. The v12 changes to store TIDs in order did a lot of that, 
but this makes it even more complicated. I know there are strong 
backwards-compatibility reasons for the current format, but 
nevertheless, if we were to design this from scratch, what would the 
B-tree page and tuple format be like?

- Heikki
v28-0001-Add-deduplication-to-nbtree.patch-with-heikki-comments (text/plain, 211.6 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.