Re: Freezing without cleanup lock

From: Jim Nasby <Jim(dot)Nasby(at)BlueTreble(dot)com>
To: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Freezing without cleanup lock
Date: 2015-10-22 23:34:08
Message-ID: 56297270.8050005@BlueTreble.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 10/21/15 3:14 PM, Alvaro Herrera wrote:
> Jim Nasby wrote:
>> While warning a client that just did a Slony-based version upgrade to make
>> sure to freeze the new database, it occurred to me that it should be safe to
>> freeze without the cleanup lock. This is interesting because it would allow
>> a scan_all vacuum to do it's job without blocking on the cleanup lock.
>>
>> Does anyone have a feel for whether scan_all vacuums blocking on the cleanup
>> lock is an actual problem?
>
> Yeah, I remember we discussed this and some other possible improvements
> related to freezing. I think other ideas proposed were that (1) during
> an emergency (uncancellable) autovacuum run, we process only the tables
> that are past the age limit, and (2) we remove the cost-based sleep so
> that it finishes as quickly as possible. (Yours is (3) only freeze and
> not do any actual pruning -- did I get that right?)

That would be the minimal-impact version, yes. But I suspect if we went
through the trouble to do that, it would be just as easy to attempt the
freeze regardless of what scan_all is set to.

What I wish I knew is whether this problem was worth worrying about or
not. Hopefully the extra logging in 9.5 will shed some light at some
point...
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2015-10-22 23:39:04 Re: Freezing without cleanup lock
Previous Message Amit Langote 2015-10-22 23:32:38 Re: ATT_FOREIGN_TABLE and ATWrongRelkindError()