hash: Implement page-at-a-time scan

Enterprise / PostgreSQL - Robert Haas [postgresql.org] - 22 September 2017 13:56 EDT

Commit 09cb5c0e7d6fbc9dee26dc429e4fc0f2a88e5272 added a similar optimization to btree back in 2006, but nobody bothered to implement the same thing for hash indexes, probably because they weren't WAL-logged and had lots of other performance problems as well. As with the corresponding btree case, this eliminates the problem of potentially needing to refind our position within the page, and cuts down on pin/unpin traffic as well.

Ashutosh Sharma, reviewed by Alexander Korotkov, Jesper Pedersen, Amit Kapila, and me. Some final edits to comments and README by me.

Discussion: http://postgr.es/m/CAE9k0Pm3KTx93K8_5j6VMzG4h5F+SyknxUwXrN-zqSZ9X8ZS3w@mail.gmail.com

7c75ef5 hash: Implement page-at-a-time scan.
src/backend/access/hash/README | 79 +++--
src/backend/access/hash/hash.c | 165 ++--------
src/backend/access/hash/hashpage.c | 10 +-
src/backend/access/hash/hashsearch.c | 569 ++++++++++++++++++++++-------------
src/backend/access/hash/hashutil.c | 67 ++++-
src/include/access/hash.h | 70 ++++-
6 files changed, 562 insertions(+), 398 deletions(-)

Upstream: git.postgresql.org


  • Share