F.29. pgstattuple

pgstattuple模块提供各种函数以获得元组级别的状态。

F.29.1. 函数

pgstattuple(text) returns record

pgstattuple返回一个关系的实际长度,"死的" 元组的百分比,和其他信息。这帮助用户确定是否需要vacuum。 该参数是目标关系的名字(可以有模式限定)。例如:

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_len bigint 实际关系长度以字节计
tuple_count bigint 活的元组的数量
tuple_len bigint 活的元组的总长度,以字节计
tuple_percent float8 活的元组的百分比
dead_tuple_count bigint 死的元组的数量
dead_tuple_len bigint 死的元组的总长度,以字节计
dead_tuple_percent float8 死的元组的百分比
free_space bigint 总的空闲空间,以字节计
free_percent float8 空闲空间的百分比

pgstattuple只获取关系中的读锁。所以结果并不反映一个瞬间的快照; 并发的更新将影响它们。

如果HeapTupleSatisfiesNow返回假,那么pgstattuple 判断一个元组是否是"死的"。

pgstattuple(oid) returns record

这和pgstattuple(text)一样,除了目标关系是通过OID指定之外。

pgstatindex(text) returns record

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

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

输出字段是:

字段 类型 描述
version integer B-tree 版本号
tree_level integer 根页面的树级别
index_size bigint 索引中页面的总数量
root_block_no bigint 根块的位置
internal_pages bigint "internal" (上一级) 页面的数量
leaf_pages bigint 叶子页面的数量
empty_pages bigint 空白页面的数量
deleted_pages bigint 已删除页面的数量
avg_leaf_density float8 叶子页面的平均密度
leaf_fragmentation float8 叶子页面碎片

pgstattuple一样,结果是一页一页的累积的, 不应该期望代表整个索引的一个瞬间快照。

pgstatginindex(regclass) returns record

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

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

输出字段是:

字段 类型 描述
version integer GIN 版本号
pending_pages integer 等待列表中页面的数量
pending_tuples bigint 等待列表中元组的数量

pg_relpages(text) returns bigint

pg_relpages返回关系中页面的数量。

F.29.2. 作者

Tatsuo Ishii 和 Satoshi Nagayasu