On 5/19/25 20:44, Peter Geoghegan wrote: > On Mon, May 19, 2025 at 2:19 PM Peter Geoghegan <p...@bowt.ie> wrote: >> On Mon, May 19, 2025 at 2:01 PM Tomas Vondra <to...@vondra.me> wrote: >>> The regular index scan however still have this issue, although it's not >>> as visible as for IOS. >> >> We can do somewhat better with plain index scans than my initial v1 >> prototype, without any major difficulties. There's more low-hanging >> fruit. >> >> We could also move the call to BufferGetLSNAtomic (that currently >> takes place inside _bt_readpage) over to _bt_drop_lock_and_maybe_pin. >> That way we'd only need to call BufferGetLSNAtomic for those leaf >> pages that will actually need to have some index tuples returned to >> the scan (through the btgettuple interface). > > Attached is v2, which does things this way. What do you think? > > v2 also manages to avoid calling BufferGetLSNAtomic during all bitmap > index scans. You didn't complain about any regressions in bitmap index > scans, but I see no reason to take any chances (it's easy to just not > call BufferGetLSNAtomic there). >
Same effect as v1 for IOS, with regular index scans I see this: 64 clients: 0.7M tps 96 clients: 1.5M tps So very similar improvement as for IOS. regards -- Tomas Vondra