💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 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](#calibre_link-1548)中描述。 **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