Обсуждение: reltuples < # of rows

Поиск
Список
Период
Сортировка

reltuples < # of rows

От
Eric Brown
Дата:
I thought that the number of tuples in a table must be greater than the
number of rows? For one of my tables, I have the following:
# analyze t_stats;
ANALYZE
siteserverdb=# select reltuples, relpages from pg_class where relname =
't_stats';
  reltuples | relpages
-----------+----------
       1760 |    21119
(1 row)

siteserverdb=# select count(*) from t_stats;
  count
-------
   1861
(1 row)


How is this possible?

I'm running postgres 8.0 on a redhat ws3. Clearly I'm not vacuuming
enough, but that seems to be a separate issue to me. Am I seeing data
corruption?

Thanks,
Eric

Eric Brown
408-571-6341
www.propel.com

Re: reltuples < # of rows

От
Tom Lane
Дата:
Eric Brown <eric.brown@propel.com> writes:
> I thought that the number of tuples in a table must be greater than the
> number of rows? For one of my tables, I have the following:
> # analyze t_stats;
> ANALYZE
> siteserverdb=# select reltuples, relpages from pg_class where relname =
> 't_stats';
>   reltuples | relpages
> -----------+----------
>        1760 |    21119
> (1 row)

> siteserverdb=# select count(*) from t_stats;
>   count
> -------
>    1861
> (1 row)

> How is this possible?

ANALYZE produces only an estimated reltuples.  To be exact it would have
to scan the entire table.

            regards, tom lane