BUG #5946: Long exclusive lock taken by vacuum (not full)

Maxim Boguk <maxim.boguk@gmail.com>

From: "Maxim Boguk" <Maxim.Boguk@gmail.com>
To: pgsql-bugs@postgresql.org
Date: 2011-03-25T08:56:41Z
Lists: pgsql-bugs
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.