F.30. pgstattuple
The pgstattuple module provides various functions to obtain tuple-level statistics.
F.30.1. Functions
pgstattuple(regclass) returns record-
pgstattuplereturns a relation's physical length, percentage of "dead" tuples, and other info. This may help users to determine whether vacuum is necessary or not. The argument is the target relation's name (optionally schema-qualified) or OID. For example:test=> SELECT * FROM pgstattuple('pg_catalog.pg_proc'); -[ RECORD 1 ]------+------- table_len | 458752 tuple_count | 1470 tuple_len | 438896 tuple_percent | 95.67 dead_tuple_count | 11 dead_tuple_len | 3157 dead_tuple_percent | 0.69 free_space | 8932 free_percent | 1.95The output columns are described in Table F-23.
Table F-23.
pgstattupleOutput ColumnsColumn Type Description table_lenbigintPhysical relation length in bytes tuple_countbigintNumber of live tuples tuple_lenbigintTotal length of live tuples in bytes tuple_percentfloat8Percentage of live tuples dead_tuple_countbigintNumber of dead tuples dead_tuple_lenbigintTotal length of dead tuples in bytes dead_tuple_percentfloat8Percentage of dead tuples free_spacebigintTotal free space in bytes free_percentfloat8Percentage of free space Note: The
table_lenwill always be greater than the sum of thetuple_len,dead_tuple_lenandfree_space. The difference is accounted for by fixed page overhead, the per-page table of pointers to tuples, and padding to ensure that tuples are correctly aligned.pgstattupleacquires only a read lock on the relation. So the results do not reflect an instantaneous snapshot; concurrent updates will affect them.pgstattuplejudges a tuple is "dead" ifHeapTupleSatisfiesDirtyreturns false. pgstattuple(text) returns record-
This is the same as
pgstattuple(regclass), except that the target relation is specified as TEXT. This function is kept because of backward-compatibility so far, and will be deprecated in some future release. pgstatindex(regclass) returns record-
pgstatindexreturns a record showing information about a B-tree index. For example:test=> SELECT * FROM pgstatindex('pg_cast_oid_index'); -[ RECORD 1 ]------+------ version | 2 tree_level | 0 index_size | 16384 root_block_no | 1 internal_pages | 0 leaf_pages | 1 empty_pages | 0 deleted_pages | 0 avg_leaf_density | 54.27 leaf_fragmentation | 0The output columns are:
Column Type Description versionintegerB-tree version number tree_levelintegerTree level of the root page index_sizebigintTotal index size in bytes root_block_nobigintLocation of root page (zero if none) internal_pagesbigintNumber of "internal" (upper-level) pages leaf_pagesbigintNumber of leaf pages empty_pagesbigintNumber of empty pages deleted_pagesbigintNumber of deleted pages avg_leaf_densityfloat8Average density of leaf pages leaf_fragmentationfloat8Leaf page fragmentation The reported
index_sizewill normally correspond to one more page than is accounted for byinternal_pages + leaf_pages + empty_pages + deleted_pages, because it also includes the index's metapage.As with
pgstattuple, the results are accumulated page-by-page, and should not be expected to represent an instantaneous snapshot of the whole index. pgstatindex(text) returns record-
This is the same as
pgstatindex(regclass), except that the target index is specified as TEXT. This function is kept because of backward-compatibility so far, and will be deprecated in some future release. pgstatginindex(regclass) returns record-
pgstatginindexreturns a record showing information about a GIN index. For example:test=> SELECT * FROM pgstatginindex('test_gin_index'); -[ RECORD 1 ]--+-- version | 1 pending_pages | 0 pending_tuples | 0The output columns are:
Column Type Description versionintegerGIN version number pending_pagesintegerNumber of pages in the pending list pending_tuplesbigintNumber of tuples in the pending list pg_relpages(regclass) returns bigint-
pg_relpagesreturns the number of pages in the relation. pg_relpages(text) returns bigint-
This is the same as
pg_relpages(regclass), except that the target relation is specified as TEXT. This function is kept because of backward-compatibility so far, and will be deprecated in some future release.
F.30.2. Authors
Tatsuo Ishii and Satoshi Nagayasu
© 1996–2019 The PostgreSQL Global Development Group
Licensed under the PostgreSQL License.
https://www.postgresql.org/docs/9.4/pgstattuple.html