My colleague hit interesting problem. His transaction hanged for a
several days (PG8.3). We found that transaction (ANALYZE) command)
waited on relation lock which had been acquired by lazy vacuum.
Unfortunately, lazy vacuum on large table (38GB) takes veeeery long time
- several days.
The problem is that vacuum and analyze use same lock. If I understood
correctly comment in analyze_rel() function it is not necessary.
I think that it is very serious issue and dead space map does not help
much in this case, because affected table is heavily modified.
If there is not another problem I suggest to use two different locks for
vacuum and analyze.
Zdenek