Thread: Is autovacuum doing a wraparound-avoiding VACUUM?

Is autovacuum doing a wraparound-avoiding VACUUM?

From
Simon Riggs
Date:
Is autovacuum doing a wraparound-avoiding VACUUM?
Currently, no easy way to tell.

Patch to change message of autovac in pg_stat_activity when we are
performing an anti-wraparound VACUUM.

We will then be able to explain why an autovacuum process doesn't get
cancelled, like we might otherwise hope it would be.

That way we can tell difference between hung and just important.

Perhaps message should say "non-automatically cancelled VACUUM
<tablename>", but that sounded more obscure than the phrase I selected.

Discuss...

--
 Simon Riggs           www.2ndQuadrant.com
 PostgreSQL Training, Services and Support

Attachment

Re: Is autovacuum doing a wraparound-avoiding VACUUM?

From
Alvaro Herrera
Date:
Simon Riggs wrote:
>
> Is autovacuum doing a wraparound-avoiding VACUUM?
> Currently, no easy way to tell.
>
> Patch to change message of autovac in pg_stat_activity when we are
> performing an anti-wraparound VACUUM.

I just obsoleted this patch.  The new patch should be easier to do
though -- just a one line change I think.

I don't like your wording though; it feels too verbose (and you're
losing the ANALYZE in case it's doing both things).  How about

    snprintf(activity, MAX_AUTOVAC_ACTIV_LEN,
        "autovacuum: VACUUM%s%s", vac
        tab->at_doanalyze ? " ANALYZE" : "",
        tab->at_wraparound ? " (wraparound)" : "");

You're not proposing it for 8.3 right?

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: Is autovacuum doing a wraparound-avoiding VACUUM?

From
Simon Riggs
Date:
On Thu, 2008-07-17 at 17:10 -0400, Alvaro Herrera wrote:
> Simon Riggs wrote:
> >
> > Is autovacuum doing a wraparound-avoiding VACUUM?
> > Currently, no easy way to tell.
> >
> > Patch to change message of autovac in pg_stat_activity when we are
> > performing an anti-wraparound VACUUM.
>
> I just obsoleted this patch.  The new patch should be easier to do
> though -- just a one line change I think.
>
> I don't like your wording though; it feels too verbose (and you're
> losing the ANALYZE in case it's doing both things).  How about
>
>     snprintf(activity, MAX_AUTOVAC_ACTIV_LEN,
>         "autovacuum: VACUUM%s%s", vac
>         tab->at_doanalyze ? " ANALYZE" : "",
>         tab->at_wraparound ? " (wraparound)" : "");

Yes, looks good.

Losing the ANALYZE was conscious, but in retrospect is something we
might live to regret. Yours is better.

> You're not proposing it for 8.3 right?

I think I am. It's an important diagnostic for your other fix.

We need to be able to tell the difference between a wraparound and other
weird situations.

--
 Simon Riggs           www.2ndQuadrant.com
 PostgreSQL Training, Services and Support


Re: Is autovacuum doing a wraparound-avoiding VACUUM?

From
Tom Lane
Date:
Simon Riggs <simon@2ndquadrant.com> writes:
> On Thu, 2008-07-17 at 17:10 -0400, Alvaro Herrera wrote:
>> I don't like your wording though; it feels too verbose (and you're
>> losing the ANALYZE in case it's doing both things).  How about
>>
>> snprintf(activity, MAX_AUTOVAC_ACTIV_LEN,
>> "autovacuum: VACUUM%s%s", vac
>> tab->at_doanalyze ? " ANALYZE" : "",
>> tab->at_wraparound ? " (wraparound)" : "");

> Yes, looks good.

May I suggest "(to prevent wraparound)" or something like that?
Otherwise, +1.

>> You're not proposing it for 8.3 right?

> I think I am. It's an important diagnostic for your other fix.

I agree, this is important for visibility into what's happening.
The string isn't getting translated so I don't see any big downside
to applying the patch in back branches.

            regards, tom lane

Re: Is autovacuum doing a wraparound-avoiding VACUUM?

From
Simon Riggs
Date:
On Fri, 2008-07-18 at 01:44 -0400, Tom Lane wrote:
> Simon Riggs <simon@2ndquadrant.com> writes:
> > On Thu, 2008-07-17 at 17:10 -0400, Alvaro Herrera wrote:
> >> I don't like your wording though; it feels too verbose (and you're
> >> losing the ANALYZE in case it's doing both things).  How about
> >>
> >> snprintf(activity, MAX_AUTOVAC_ACTIV_LEN,
> >> "autovacuum: VACUUM%s%s", vac
> >> tab->at_doanalyze ? " ANALYZE" : "",
> >> tab->at_wraparound ? " (wraparound)" : "");
>
> > Yes, looks good.
>
> May I suggest "(to prevent wraparound)" or something like that?
> Otherwise, +1.
>
> >> You're not proposing it for 8.3 right?
>
> > I think I am. It's an important diagnostic for your other fix.
>
> I agree, this is important for visibility into what's happening.
> The string isn't getting translated so I don't see any big downside
> to applying the patch in back branches.

Patches for 8.3 and CVS HEAD.

--
 Simon Riggs           www.2ndQuadrant.com
 PostgreSQL Training, Services and Support

Attachment

Re: Is autovacuum doing a wraparound-avoiding VACUUM?

From
Alvaro Herrera
Date:
Simon Riggs wrote:

> On Fri, 2008-07-18 at 01:44 -0400, Tom Lane wrote:
> > I agree, this is important for visibility into what's happening.
> > The string isn't getting translated so I don't see any big downside
> > to applying the patch in back branches.
>
> Patches for 8.3 and CVS HEAD.

Applied, thanks.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.