Re: Improving btree performance through specializing by key shape, take 2 - Mailing list pgsql-hackers
From | Peter Geoghegan |
---|---|
Subject | Re: Improving btree performance through specializing by key shape, take 2 |
Date | |
Msg-id | CAH2-WzktBQwOdjxyKteGcNky4ooBAogFN4OWBDVsJhjJyBVJRg@mail.gmail.com Whole thread Raw |
In response to | Improving btree performance through specializing by key shape, take 2 (Matthias van de Meent <boekewurm+postgres@gmail.com>) |
Responses |
Re: Improving btree performance through specializing by key shape, take 2
Re: Improving btree performance through specializing by key shape, take 2 |
List | pgsql-hackers |
On Fri, Apr 8, 2022 at 9:55 AM Matthias van de Meent <boekewurm+postgres@gmail.com> wrote: > Here's generation 2 of this effort. Instead of proceeding to trying to > shoehorn all types of btree keys into one common code path, this > patchset acknowledges that there exist different shapes of keys that > each have a different best way of accessing each subsequent key > attribute. This patch achieves this by specializing the functions to > different key shapes. Cool. > These patches still have some rough edges (specifically: some > functions that are being generated are unused, and intermediate > patches don't compile), but I wanted to get this out to get some > feedback on this approach. I attempted to apply your patch series to get some general sense of how it affects performance, by using my own test cases from previous nbtree project work. I gave up on that pretty quickly, though, since the code wouldn't compile. That in itself might have been okay (some "rough edges" are generally okay). The real problem was that it wasn't clear what I was expected to do about it! You mentioned that some of the patches just didn't compile, but which ones? How do I quickly get some idea of the benefits on offer here, however imperfect or preliminary? Can you post a version of this that compiles? As a general rule you should try to post patches that can be "test driven" easily. An opening paragraph that says "here is why you should care about my patch" is often something to strive for, too. I suspect that you actually could have done that here, but you didn't, for whatever reason. > I expect the performance to be at least on par with current btree > code, and I'll try to publish a more polished patchset with > performance results sometime in the near future. I'll also try to > re-attach dynamic page-level prefix truncation, but that depends on > the amount of time I have and the amount of feedback on this patchset. Can you give a few motivating examples? You know, queries that are sped up by the patch series, with an explanation of where the benefit comes from. You had some on the original thread, but that included dynamic prefix truncation stuff as well. Ideally you would also describe where the adversized improvements come from for each test case -- which patch, which enhancement (perhaps only in rough terms for now). -- Peter Geoghegan
pgsql-hackers by date: