• T
    Change seqscan logic so that we check visibility of all tuples on a page · 70f1482d
    Tom Lane 提交于
    when we first read the page, rather than checking them one at a time.
    This allows us to take and release the buffer content lock just once
    per page, instead of once per tuple.  Since it's a shared lock the
    contention penalty for holding the lock longer shouldn't be too bad.
    We can safely do this only when using an MVCC snapshot; else the
    assumption that visibility won't change over time is uncool.  Therefore
    there are now two code paths depending on the snapshot type.  I also
    made the same change in nodeBitmapHeapscan.c, where it can be done always
    because we only support MVCC snapshots for bitmap scans anyway.
    Also make some incidental cleanups in the APIs of these functions.
    Per a suggestion from Qingqing Zhou.
    70f1482d
relscan.h 3.9 KB