Re: Adding skip scan (including MDAM style range skip scan) to nbtree - Mailing list pgsql-hackers

From BharatDB
Subject Re: Adding skip scan (including MDAM style range skip scan) to nbtree
Date
Msg-id CAAh00EQ_z5_iseEZvZjibFOKYvCtAUxKHMkFjsNEpiiRvNRbvg@mail.gmail.com
Whole thread Raw
In response to Adding skip scan (including MDAM style range skip scan) to nbtree  (Peter Geoghegan <pg@bowt.ie>)
List pgsql-hackers
Dear Team,

With reference to the conversation ongoing in message ID : c562dc2a-6e36-46f3-a5ea-cd42eebd7118,As a follow-up to the skip scan regression discussion, I tested a small patch that introduces static allocation/caching of `IndexAmRoutine` objects in `amapi.c`, removing the malloc/free overhead.

Test setup :
- Baseline: PG17 (commit before skip scan)
- After: PG18 build with skip scan (patched)
- pgbench scale=1, 100 partitions
- Query: `select count(*) from pgbench_accounts where bid = 0`
- Clients: 1, 4, 32
- Protocols: simple, prepared

Results (tps, 10s runs) :

Mode Clients Before (PG17) After (PG18 w/ static fix)

simple 1 23856 20332 (~15% lower)
simple 4 55299 53184 (~4% lower)
simple 32 79779 78347 (~2% lower)

prepared 1 26364 26615 (no regression)
prepared 4 55784 54437 (~2% lower)
prepared 32 84687 80374 (~5% lower)

This shows the static fix eliminates the severe ~50% regression previously observed by Tomas, leaving only a small residual slowdown (~2-15%).

Patch summary :
- Cache `IndexAmRoutine` instances per AM OID instead of malloc/free per call.
- Avoid `pfree(amroutine)` in hot paths.
- Keeps allocations stable across lookups, reducing malloc churn.

Proposal :
I suggest adopting this static allocation approach for PG18 to prevent performance cliffs. Longer term, we can explore lighter-weight caching mechanisms or further executor tuning.

Patch attached for discussion.

Thanks & Regards,
Athiyaman M

Attachment

pgsql-hackers by date:

Previous
From: BharatDB
Date:
Subject: Re: Adding skip scan (including MDAM style range skip scan) to nbtree
Next
From: Jakub Wartak
Date:
Subject: Re: PostgreSQL 18 GA press release draft