Commit d0dcb315db0043f10073a9a244cea138e9e60edd and previous introduced a bug into the reporting of removed row versions. ('Twas myself et al, before you ask).
In those commits, lazy_vacuum_heap() skipped pinned blocks, but then failed to report that accurately, claiming that the tuples were actually removed when they were not. That bug has masked the effect of the page skipping behaviour. Bug is in 9.2 and HEAD. Attached patch corrects that, with logic to move to the next block rather than re-try the lock in a tight loop once per tuple, which was mostly ineffective. Attached patch also changes the algorithm slightly to retry a skipped block by sleeping and then retrying the block, following observation of the effects of the current skipping algorithm once skipped rows are correctly reported. It also adds a comment which explains the skipping behaviour. Viewpoints? -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
vacuum_skipped_tuple_reporting.v1.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers