On 23/02/11 03:27, Robert Haas wrote:
On Tue, Feb 22, 2011 at 6:26 AM, Greg Stark<gsst...@mit.edu>  wrote:
Actually it's not waiting for the LockBuffer LWLock. it's waiting
until your query unpins the buffer it wants. Vacuum tries to get an
exclusive lock on the buffer, if it gets it then it checks if anyone
is using that buffer. If someone is then it unlocks the buffer and
waits until nobody has it pinned.
How bad it would be if we made LockBufferForCleanup() not wait?  If we
can't obtain the buffer cleanup lock immediately, we just skip that
page and continue on.  That would prevent us from updating
relfrozenxid, I guess, but we already can't do that if there are any
bits set in the visibility map.   It could also leave some bloat in
the table, but probably not much (he says hopefully).


Seems like a good suggestion, and may leave less bloat than having the vacuum hung for potentially quite some time.

Mark

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to