Re: Autovacuum of independent tables

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Michael Holzman <michaelholzman(at)gmail(dot)com>
Cc: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, "pgsql-general(at)postgresql(dot)org >> PG-General Mailing List" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Autovacuum of independent tables
Date: 2020-09-08 08:27:55
Message-ID: 20200908082755.GI19261@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Sep 08, 2020 at 11:16:04AM +0300, Michael Holzman wrote:
> Autovacuum does not clean dead tuples of closed transactions in tableB
> while there is an open transaction on tableA.
> But the tables have nothing in common. They are handled by separate
> applications and there are no transactions that touch both tables
> simultaneously.
> Why does autovacuum create an artificial dependency on the tables?

This is called MVCC, which applies to a session as a whole. The point
here is that even if your application knows that only tableA is used
by a given transaction, Postgres cannot know that, as it could be
possible that data from tableB is needed in this same transaction, so
old versions of the rows from tableB matching with the snapshot hold
by this long-running transaction still have to be around.
--
Michael

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Michael Holzman 2020-09-08 08:42:44 Re: Autovacuum of independent tables
Previous Message Michael Holzman 2020-09-08 08:16:04 Re: Autovacuum of independent tables