Re: vacuumdb parallel has a deadlock detected in 9.5.4

From: huang <foggyglass(at)163(dot)com>
To: "Francisco Olarte" <folarte(at)peoplecall(dot)com>
Cc: "Alvaro Herrera" <alvherre(at)2ndquadrant(dot)com>, "depesz(at)depesz(dot)com" <depesz(at)depesz(dot)com>, "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: vacuumdb parallel has a deadlock detected in 9.5.4
Date: 2016-09-29 14:48:14
Message-ID: 6827321f.f233.157766ad043.Coremail.foggyglass@163.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

At 2016-09-29 15:57:58, "Francisco Olarte" <folarte(at)peoplecall(dot)com> wrote:
>Hi:
>
>On Wed, Sep 28, 2016 at 10:39 PM, Alvaro Herrera
><alvherre(at)2ndquadrant(dot)com> wrote:
>>> > There is a error deadlock detected in vacuumdb parallel .
>>> > but if I do not use parallel , it has not deadlock detected .
>>> man vacuumdb says about -j option:
>>>
>>> >> Note that using this mode together with the -f (FULL) option might cause
>>> >> deadlock failures if certain system catalogs are processed in parallel.
>>> so, while I understand it's not pretty, it's well documented.
>>
>> Yeah. However I think this behavior is rather unhelpful. Maybe we
>> should try to fix it somehow, but I'm not sure how. We could say that
>> pg_catalog tables can only be processed one at a time, instead of trying
>> to paralelize them? For example: have vacuumdb fill two lists of
>> tables, one for pg_catalog and one for tables in other schemas. Each
>> worker chooses a table from the pg_catalog list first if it's not empty
>> and there's no other worker doing one of these, otherwise one from the
>> other table.
>>
>> I think that'd fix it, while not destroying paralelizability too badly.
>
>I would propose another behaviour, which I think can solve the problem
>without introducing more complex code. Put a couple of flags to vacuum
>only catalog tables / non catalog tables ( I believe this can be
>served by include/exclude schemas too, which will be even more useful
>for other things ). This way one can do a full paralell vacuum of
>non-catalog objects followed by a serial one on catalog objects (
>which should not be too slow on 'normal' databases ) ( I propose this
>order because IIRC normal vacuum updates catalog tables so they get
>vacuumed after to tidy them )
>

>Francisco Olarte

hi ,
I just hope the vacuumdb parallel can quickly finishing work .
our database has a lot of tables .
they need vacuumdb . but the time is too long .
so , I used the vacuumdb parallel .

thanks to everyone . : )

Best regards,
TT
28-09-2016

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Kevin Grittner 2016-09-29 14:48:19 Re: BUG #14345: run multi-PG9.6 on One Host, hang when checkpoint
Previous Message Tom Lane 2016-09-29 14:46:08 Re: BUG #14346: CREATE TABLE xxx (LIKE yyy INCLUDING ALL) fails