Re: Statistics mismatch between n_live_tup and actual row count - Mailing list pgsql-general

From Tom Lane
Subject Re: Statistics mismatch between n_live_tup and actual row count
Date
Msg-id 10296.1354850362@sss.pgh.pa.us
Whole thread Raw
In response to Re: Statistics mismatch between n_live_tup and actual row count  (tim_wilson <tim.wilson@telogis.com>)
Responses Re: Statistics mismatch between n_live_tup and actual row count
List pgsql-general
tim_wilson <tim.wilson@telogis.com> writes:
> This drift gets more confusing.

In recent releases, reltuples (and relpages) are updated via a "moving
average" calculation that is meant to converge on the true value over
time.  The reason vacuum has to act that way is that it typically
doesn't scan the whole table anymore, but only the pages that have been
dirtied recently.  So it measures the tuple density in the pages it
scans, and updates the previous value more or less aggressively
depending on the percentage of the pages that it looked at.

It's possible that there's some bug in that algorithm, but what seems
more likely is that the pages that are getting dirtied are
nonrepresentative of the whole table for some reason.  Or maybe both.

Can you put together a self-contained test case showing this behavior?

            regards, tom lane


pgsql-general by date:

Previous
From: "ac@hsk.hk"
Date:
Subject: Ubutu 12.04 and PostgreSQL9.2.1
Next
From: tim_wilson
Date:
Subject: Re: Statistics mismatch between n_live_tup and actual row count