Reduce non-leaf keys overlap in GiST indexes produced by a sorted build
authorAlexander Korotkov <akorotkov@postgresql.org>
Mon, 7 Feb 2022 20:20:42 +0000 (23:20 +0300)
committerAlexander Korotkov <akorotkov@postgresql.org>
Mon, 7 Feb 2022 20:20:42 +0000 (23:20 +0300)
commitf1ea98a7975e15cefdb446385880a2f55224ee7d
tree8efc57dc7b2480397fc838baa0dd328630f611b6
parent42a9e88bf6a809e6023c9d50f58cc6b9446f229d
Reduce non-leaf keys overlap in GiST indexes produced by a sorted build

The GiST sorted build currently chooses split points according to the only page
space utilization.  That may lead to higher non-leaf keys overlap and, in turn,
slower search query answers.

This commit makes the sorted build use the opclass's picksplit method.  Once
four pages at the level are accumulated, the picksplit method is applied until
each split partition fits the page.  Some of our split algorithms could show
significant performance degradation while processing 4-times more data at once.
But those opclasses haven't received the sorted build support and shouldn't
receive it before their split algorithms are improved.

Discussion: https://postgr.es/m/CAHqSB9jqtS94e9%3D0vxqQX5dxQA89N95UKyz-%3DA7Y%2B_YJt%2BVW5A%40mail.gmail.com
Author: Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin
Reviewed-by: Björn Harrtell, Darafei Praliaskouski, Andres Freund
Reviewed-by: Alexander Korotkov
contrib/pageinspect/expected/gist.out
src/backend/access/gist/README
src/backend/access/gist/gistbuild.c
src/tools/pgindent/typedefs.list