The following bug has been logged online:
Bug reference: 5946
Logged by: Maxim Boguk
Email address: Maxim.Boguk@gmail.com
PostgreSQL version: 8.4
Operating system: Linux
Description: Long exclusive lock taken by vacuum (not full)
Details:
From documentation I know that vacuum (without full) can truncate empty
pages from end of a relation if they are free and vacuum successfully grabed
exclusive lock for short time.
However, I wasn't ready to learn that 'short exclusive lock' can be 10-20
minutes in some cases.
In my case vacuum tried to truncate last 10-15GB from 100Gb relation, and
each time (3) it was cost 10+ minutes of service downtime (because that
table was completely locked).
Is that correct behaviour? Are here any way to speedup that process or at
least allow read-only queries during that time?
PS: no exessive disk IO observed during that 10+ min locks.