Re: dead tuple difference between pgstattuple and pg_stat_user_tables - Mailing list pgsql-general

From Matthew Tice
Subject Re: dead tuple difference between pgstattuple and pg_stat_user_tables
Date
Msg-id CA+taBv9QcWyPZDcXh03spn9MJkUrGD5UnH=4i3Zt_5mp8awnfA@mail.gmail.com
Whole thread Raw
In response to Re: dead tuple difference between pgstattuple and pg_stat_user_tables  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: dead tuple difference between pgstattuple and pg_stat_user_tables
List pgsql-general


On Fri, Aug 23, 2024 at 10:26 AM Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 8/23/24 09:14, Matthew Tice wrote:
> Hi All,
>
> I'm trying to understand why there's a difference between what
> pgstattuple reports and pg_stat_user_tables reports (for the number of
> dead tuples).
>
> As I understand, pgstattuple and pgstattuple_approx return the exact
> number of dead tuples (as noted in the documentation) and based on an

https://www.postgresql.org/docs/current/pgstattuple.html

pgstattuple_approx(regclass) returns record

     pgstattuple_approx is a faster alternative to pgstattuple that
returns approximate results.

Not sure how you get exact count out of that?

Maybe the wording is a little confusing to me. Under the section for pgstattuple_approx:
"pgstattuple_approx tries to avoid the full-table scan and returns exact dead tuple statistics along with an approximation of the number and size of live tuples and free space."
 

> This is a Google Alloy DB instance running:

https://cloud.google.com/alloydb/docs/overview

"AlloyDB for PostgreSQL is a fully managed, PostgreSQL-compatible
database service that's designed for your most demanding workloads,
including hybrid transactional and analytical processing. AlloyDB pairs
a Google-built database engine with a cloud-based, multi-node
architecture to deliver enterprise-grade performance, reliability, and
availability."

Where the important parts are 'PostgreSQL-compatible' and 'Google-built
database engine'. You probably need to reach out to Google to see what
that means for this situation.

Got it, thanks Adrian.
 

>  > select version();
> -[ RECORD 1 ]-------------------------
> version | PostgreSQL 14.10 on x86_64-pc-linux-gnu, compiled by Debian
> clang version 12.0.1, 64-bit
> SELECT 1

--
Adrian Klaver
adrian.klaver@aklaver.com

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: dead tuple difference between pgstattuple and pg_stat_user_tables
Next
From: Adrian Klaver
Date:
Subject: Re: dead tuple difference between pgstattuple and pg_stat_user_tables