Re: WIP: BRIN multi-range indexes
Tomas Vondra <tomas.vondra@2ndquadrant.com>
From: Tomas Vondra <tomas.vondra@2ndquadrant.com>
To: John Naylor <john.naylor@2ndquadrant.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2020-09-13T16:40:43Z
Lists: pgsql-hackers
Attachments
- 0004-BRIN-bloom-indexes-20200913.patch (text/plain)
Hi, while running some benchmarks to see if the first two patches cause any regressions, I found a bug in 0002 which reworks the NULL handling. The code failed to eliminate ranges early using the IS NULL scan keys, resulting in expensive recheck. The attached version fixes that. I also noticed that some of the queries seem to be slightly slower, most likely due to bringetbitmap having to split the scan keys per attribute, which also requires some allocations etc. The regression is fairly small might be just noise (less than 2-3% in most cases), but it seems just allocating everything in a single chunk eliminates most of it - this is what the new 0003 patch does. OTOH the rework also helps in other cases - I've measured ~2-3% speedups for cases where moving the IS NULL handling to bringetbitmap eliminates calls to the consistent function (e.g. IS NULL queries on columns with no NULL values). These results seems very dependent on the hardware (especially CPU), though, and the differences are pretty small in general (1-2%). regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
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