↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
历史版本。 PostgreSQL 9.4 已结束支持。 2020-02-13. 请参阅 当前版本手册.

F.30. pgstattuple — 获取元组级统计信息 #

pgstattuple 模块提供了多种用于获取元组级统计信息的函数。

F.30.1. 函数

pgstattuple(regclass) returns record

pgstattuple 返回一个关系的物理长度、“死”元组所占百分比以及其他信息。这可以帮助用户判断是否需要执行清理。参数是目标关系的名称(可选带模式限定)或 OID。例如:

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

输出列的说明见表 F.23。

表 F.23. pgstattuple 输出列

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

注意

table_len 总会大于 tuple_len、dead_tuple_len 和 free_space 之和。差值来自固定的页开销、每页的元组指针表,以及为保证元组正确对齐而产生的填充。

pgstattuple 只会在该关系上获取读锁。因此,结果并不代表一个瞬时快照;并发更新会影响结果。

如果 HeapTupleSatisfiesDirty 返回 false,pgstattuple 就会将该元组判定为“死”。

pgstattuple(text) returns record

这与 pgstattuple(regclass) 相同,只是目标关系是以 TEXT 指定的。该函数目前保留只是出于向后兼容考虑,并将在未来的某个版本中弃用。

pgstatindex(regclass) returns record

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

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 | 0

输出列如下:

列类型描述
versionintegerB-树版本号
tree_levelinteger根页所在的树层级
index_sizebigint索引总大小(字节)
root_block_nobigint根页的位置(若无则为零)
internal_pagesbigint“内部”(上层)页的数量
leaf_pagesbigint叶子页数量
empty_pagesbigint空页数量
deleted_pagesbigint已删除页数量
avg_leaf_densityfloat8叶子页平均密度
leaf_fragmentationfloat8叶子页碎片化程度

报告的 index_size 通常会比 internal_pages + leaf_pages + empty_pages + deleted_pages 所对应的页数多 1 页,因为它还包含索引的元页。

与 pgstattuple 一样,结果是逐页累积得到的,因此不应期望它表示整个索引的瞬时快照。

pgstatindex(text) returns record

这与 pgstatindex(regclass) 相同,只是目标索引是以 TEXT 指定的。该函数目前保留只是出于向后兼容考虑,并将在未来的某个版本中弃用。

pgstatginindex(regclass) returns 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(regclass) returns bigint

pg_relpages 返回该关系中的页数。

pg_relpages(text) returns bigint

这与 pg_relpages(regclass) 相同,只是目标关系是以 TEXT 指定的。该函数目前保留只是出于向后兼容考虑,并将在未来的某个版本中弃用。

F.30.2. 作者

Tatsuo Ishii 和 Satoshi Nagayasu

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.