heapam: Add batch mode mvcc check and use it in page mode There are two reasons for doing so:
1) It is generally faster to perform checks in a batched fashion and making sequential scans faster is nice. 2) We would like to stop setting hint bits while pages are being written out. The necessary locking becomes visible for page mode scans, if done for every tuple. With batching, the overhead can be amortized to only happen once per page. There are substantial further optimization opportunities along these lines: - Right now HeapTupleSatisfiesMVCCBatch() simply uses the single-tuple HeapTupleSatisfiesMVCC(), relying on the compiler to inline it. We could instead write an explicitly optimized version that avoids repeated xid tests. - Introduce batched version of the serializability test - Introduce batched version of HeapTupleSatisfiesVacuum Reviewed-by: Melanie Plageman <[email protected]> Discussion: https://postgr.es/m/6rgb2nvhyvnszz4ul3wfzlf5rheb2kkwrglthnna7qhe24onwr@vw27225tkyar Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/0b96e734c5904ee26b8f622b3348620dda4bfee5 Modified Files -------------- src/backend/access/heap/heapam.c | 84 ++++++++++++++++++++++------- src/backend/access/heap/heapam_visibility.c | 43 +++++++++++++++ src/include/access/heapam.h | 17 ++++++ src/tools/pgindent/typedefs.list | 1 + 4 files changed, 125 insertions(+), 20 deletions(-)
