Re: WIP: BRIN multi-range indexes
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: John Naylor <john.naylor@enterprisedb.com>
Cc: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-01-13T01:09:19Z
Lists: pgsql-hackers
Attachments
On 1/12/21 6:28 PM, John Naylor wrote: > On Sat, Dec 19, 2020 at 8:15 PM Tomas Vondra > <tomas.vondra@enterprisedb.com <mailto:tomas.vondra@enterprisedb.com>> > wrote: > > [12-20 version] > > Hi Tomas, > > The measurements look good. In case it fell through the cracks, my > earlier review comments for Bloom BRIN indexes regarding minor details > don't seem to have been addressed in this version. I'll point to earlier > discussion for convenience: > > https://www.postgresql.org/message-id/CACPNZCt%3Dx-fOL0CUJbjR3BFXKgcd9HMPaRUVY9cwRe58hmd8Xg%40mail.gmail.com > <https://www.postgresql.org/message-id/CACPNZCt%3Dx-fOL0CUJbjR3BFXKgcd9HMPaRUVY9cwRe58hmd8Xg%40mail.gmail.com> > > https://www.postgresql.org/message-id/CACPNZCuqpkCGt8%3DcywAk1kPu0OoV_TjPXeV-J639ABQWyViyug%40mail.gmail.com > <https://www.postgresql.org/message-id/CACPNZCuqpkCGt8%3DcywAk1kPu0OoV_TjPXeV-J639ABQWyViyug%40mail.gmail.com> > Attached is a patch, addressing those issues - particularly those from the first link, the second one is mostly a discussion about how to do the hashing properly etc. It also switches to the two-hash variant, as discussed earlier. I've changed the range to allow false positives between 0.0001 and 0.25, instead the original range (0.001 and 0.1). The default (0.01) remains the same. I was worried that the original range was too narrow, and would prevent even sensible combinations of parameter values. But now that we reject bloom filters that are obviously too large, it's less of an issue I think. I'm not entirely convinced the sort_mode option should be committed. It was meant only to allow benchmarking the hash approaches. In fact, I'm thinking about removing the sorted mode entirely - if the bloom filter contains only a few distinct values: a) it's going to be almost entirely 0 bits, so easy to compress b) it does not eliminate collisions entirely (we store hashes, not the original values) regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
BRIN minmax-multi indexes
- ab596105b55f 14.0 landed
-
BRIN bloom indexes
- 77b88cd1bb90 14.0 landed
-
Support the old signature of BRIN consistent function
- a681e3c107aa 14.0 landed
-
Remove unnecessary pg_amproc BRIN minmax entries
- a68dfa27d42f 14.0 landed
-
Optimize allocations in bringetbitmap
- 8e4b332e88b8 14.0 landed
-
Move IS [NOT] NULL handling from BRIN support functions
- 72ccf55cb99c 14.0 landed
-
Pass all scan keys to BRIN consistent function at once
- a1c649d889bd 14.0 landed
-
Properly detoast data in brin_form_tuple
- d2d3a4bd33d2 9.5.24 landed
- bae31e75f777 9.6.20 landed
- 0b96fc977c5b 10.15 landed
- 895d0f0e8218 11.10 landed
- 8149e9f9a0d6 12.5 landed
- 6a7b55f3716f 13.1 landed
- 7577dd84807a 14.0 landed