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
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() |