Re: VACUUM FULL not working with persistent connections

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: VACUUM FULL not working with persistent connections
Дата
Msg-id 20021028153042.U84538-100000@megazone23.bigpanda.com
обсуждение исходный текст
Список pgsql-general
On Mon, 28 Oct 2002, Juan Jose Comellas wrote:

> The connections are staying idle in a transaction (both in v7.1.3 and v7.2),
> but I'm not sure why. We've developed a Java application that uses a database
> connection pool (developed by us) that runs a rollback transaction whenever a
> connection is returned to the pool. We do this to ensure that each connection
> is in a clean state when inside the pool. Somehow the JDBC drivers interpret
> this in a strange way and leave a transaction open. Other than that,
> everything seems to be working perfectly.
>
> It is very strange, because under v7.2 Postgres seems to stop vacuuming before
> deleting all the useless tuples (see example below). If I run a verbose
> VACUUM you will notice that it moves some tuples instead of removing them. Is
> this the expected behavior? We are seeing a large performance drop with
> PostgreSQL v7.2 when having a lot of updates on one table.

If one of the open transactions is earlier than the updates, then I
believe vacuum will not delete the old rows because they might be visible
to some transaction.

Like I think:
T1: begin; -- this one's just hanging out
T2: begin;
T2: update t set a=2;
T2: commit;
T3: vacuum full verbose t;
 -- I don't believe this vacuum will remove the old value of row(s) in t.
 -- Since there are circumstances where T1 might be able to see said rows.



В списке pgsql-general по дате отправления:

Предыдущее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: comamnds
Следующее
От: evertcarton@netscape.net (Evert Carton)
Дата:
Сообщение: Re: Thoughts on 7.3b3 in production?