F.29. pgstattuple

pgstattuple模块提供多种函数来获得元组层的统计信息。

F.29.1. 函数

pgstattuple(text) 返回 record

pgstattuple返回一个关系的物理长度、"死亡"元组的百分比以及其他信息。这可以帮助用户决定是否需要清理。参数是目标关系的名称(可以有选择地用模式限定)。例如:

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.95

Table F-21中描述了输出列。

Table F-21. pgstattuple 输出列

类型描述
table_lenbigint物理关系长度,以字节计
tuple_countbigint存活元组的数量
tuple_lenbigint存活元组的总长度,以字节计
tuple_percentfloat8存活元组的百分比
dead_tuple_countbigint死亡元组的数量
dead_tuple_lenbigint死亡元组的总长度,以字节计
dead_tuple_percentfloat8死亡元组的百分比
free_spacebigint空闲空间总量,以字节计
free_percentfloat8空闲空间的百分比

pgstattuple只要求在关系上的一个读锁。因此结果不能反映一个即时快照,并发更新将影响结果。

如果HeapTupleSatisfiesNow返回假,pgstattuple就判定一个元组是"死亡的"

pgstattuple(oid) 返回 record

pgstattuple(text)相同,只不过通过 OID 指定目标关系。

pgstatindex(text) 返回 record

pgstatindex返回一个记录显示有关一个 B-树 索引的信息。例如:

test=> SELECT * FROM pgstatindex('pg_cast_oid_index');
-[ RECORD 1 ]------+------
version            | 2
tree_level         | 0
index_size         | 8192
root_block_no      | 1
internal_pages     | 0
leaf_pages         | 1
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 50.27
leaf_fragmentation | 0

输出列是:

类型描述
versionintegerB-树 版本号
tree_levelinteger根页的树层次
index_sizebigint索引中页面总数
root_block_nobigint根块的位置
internal_pagesbigint"内部"(上层)页面的数量
leaf_pagesbigint叶子页的数量
empty_pagesbigint空页的数量
deleted_pagesbigint删除页的数量
avg_leaf_densityfloat8叶子页的平均密度
leaf_fragmentationfloat8叶子页碎片

对于pgstattuple,结果是一页一页累计的并且不要期望结果会表示整个索引的一个即时快照。

pgstatginindex(regclass) 返回 record

pgstatginindex返回一个记录显示有关一个 GIN 索引的信息。例如:

test=> SELECT * FROM pgstatginindex('test_gin_index');
-[ RECORD 1 ]--+--
version        | 1
pending_pages  | 0
pending_tuples | 0

输出列是:

类型描述
versionintegerGIN 版本号
pending_pagesinteger待处理列表中的页面数
pending_tuplesbigint待处理列表中的元组数

pg_relpages(text) 返回 bigint

pg_relpages返回关系中的页面数。

F.29.2. 作者

Tatsuo Ishii 和 Satoshi Nagayasu