VACUUM FULL produce warnings

Lists: pgsql-general
From: spied(at)yandex(dot)ru
To: pgsql-general(at)postgresql(dot)org
Subject: VACUUM FULL produce warnings
Date: 2004-06-10 07:37:20
Message-ID: 355171921.20040610113720@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: spied(at)yandex(dot)ru
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: VACUUM FULL produce warnings
Date: 2004-06-10 14:32:42
Message-ID: 24406.1086877962@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

spied(at)yandex(dot)ru writes:
> look please http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=253295

I wouldn't worry about it. It's probably due to the fact that we tend
to release write lock on system catalogs immediately after updating the
catalog, instead of holding the lock till commit. That means it's
possible for VACUUM FULL to see uncommitted tuples in system catalogs,
which it should never do in user tables.

(This theory does assume that you are making system catalog changes
concurrently with running VACUUM, which doesn't entirely square with
your statement that database updates are "rare". Perhaps you create
and delete temp tables frequently?)

regards, tom lane


From: spied(at)yandex(dot)ru
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org
Subject: Re: VACUUM FULL produce warnings
Date: 2004-06-11 11:01:39
Message-ID: 53103830203.20040611150139@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

>> look please http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=253295

TL> I wouldn't worry about it. It's probably due to the fact that we tend
TL> to release write lock on system catalogs immediately after updating the
TL> catalog, instead of holding the lock till commit.

ok, but what is best:
- leave as is
- do REINDEX DASTABASE before VACUUM FULL
- stop all transactions before VACUUM FULL

TL> That means it's possible for VACUUM FULL to see uncommitted
TL> tuples in system catalogs, which it should never do in user tables.

if i understand right, after some time vacuum must run without
warnings, but after first warning vacuum print this warnings every
time until reindex.

TL> (This theory does assume that you are making system catalog changes
TL> concurrently with running VACUUM, which doesn't entirely square with
TL> your statement that database updates are "rare". Perhaps you create
TL> and delete temp tables frequently?)

oops, it's my mistake.
i do
SELECT ... INTO TEMPORARY ...
instead
START TRANSACTION ISOLATION LEVEL SERIALIZABLE
CREATE VIEW ... AS SELECT ...

what way (create temporary table or set isolation level on
transaction) is better?

ps: sorry, english it's not my native language


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: spied(at)yandex(dot)ru
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: VACUUM FULL produce warnings
Date: 2004-06-11 18:27:46
Message-ID: 17170.1086978466@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

spied(at)yandex(dot)ru writes:
> if i understand right, after some time vacuum must run without
> warnings, but after first warning vacuum print this warnings every
> time until reindex.

Oh? I was thinking of transient conditions, but it sounds like you
have found a way to produce a permanent mismatch in the tuple counts.
Can you provide a test case that gets the catalogs into this state?

regards, tom lane