Re: pgsql: Avoid having vacuum set reltuples to 0 on non-empty relations in

From: Vik Fearing <vik(dot)fearing(at)2ndquadrant(dot)com>
To: Andrew Gierth <rhodiumtoad(at)postgresql(dot)org>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Avoid having vacuum set reltuples to 0 on non-empty relations in
Date: 2017-03-16 22:44:49
Message-ID: CAJguA1SRBxPVJEs3knUnpvRcgzLTsmf2+mSXC-oRhXZJn+5pgw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

On Thu, Mar 16, 2017 at 11:39 PM, Andrew Gierth <rhodiumtoad(at)postgresql(dot)org>
wrote:

> Avoid having vacuum set reltuples to 0 on non-empty relations in the
> presence of page pins, which leads to serious estimation errors in the
> planner. This particularly affects small heavily-accessed tables,
> especially where locking (e.g. from FK constraints) forces frequent
> vacuums for mxid cleanup.
>
> Fix by keeping separate track of pages whose live tuples were actually
> counted vs. pages that were only scanned for freezing purposes. Thus,
> reltuples can only be set to 0 if all pages of the relation were
> actually counted.
>
> Backpatch to all supported versions.
>
> Per bug #14057 from Nicolas Baccelli, analyzed by me.
>
> Discussion: https://postgr.es/m/20160331103739.8956.94469@
> wrigleys.postgresql.org
>

Congrats on your first commit!

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2017-03-16 23:01:05 pgsql: psql: Add completion for \help DROP|ALTER
Previous Message Andrew Gierth 2017-03-16 22:39:31 pgsql: Avoid having vacuum set reltuples to 0 on non-empty relations in