Обсуждение: pgsql: Make VACUUM avoid waiting for a cleanup lock, where possible.
Make VACUUM avoid waiting for a cleanup lock, where possible. In a regular VACUUM, it's OK to skip pages for which a cleanup lock isn't immediately available; the next VACUUM will deal with them. If we're scanning the entire relation to advance relfrozenxid, we might need to wait, but only if there are tuples on the page that actually require freezing. These changes should greatly reduce the incidence of of vacuum processes getting "stuck". Simon Riggs and Robert Haas Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/bbb6e559c4ea0fb4c346beda76736451dc24eb4e Modified Files -------------- src/backend/access/heap/heapam.c | 38 ++++++++++++++++ src/backend/commands/vacuumlazy.c | 86 +++++++++++++++++++++++++++++++++++-- src/include/access/heapam.h | 2 + 3 files changed, 122 insertions(+), 4 deletions(-)
On 8 November 2011 02:46, Robert Haas <rhaas@postgresql.org> wrote: > Make VACUUM avoid waiting for a cleanup lock, where possible. > > In a regular VACUUM, it's OK to skip pages for which a cleanup lock > isn't immediately available; the next VACUUM will deal with them. If > we're scanning the entire relation to advance relfrozenxid, we might > need to wait, but only if there are tuples on the page that actually > require freezing. These changes should greatly reduce the incidence > of of vacuum processes getting "stuck". Minor comment typo but a typo nonetheless: It's OK to skip vacuuming a page, as long as its not got data Should be: It's OK to skip vacuuming a page, as long as it's not got data -- Thom Brown Twitter: @darkixion IRC (freenode): dark_ixion Registered Linux user: #516935 EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company