PHP实战中知识总结 / PgSQL - pg_stat_all_indexes(系统表)
pg_stat_all_indexes视图将为当前数据库中的每个索引包含一行,该行显示关于对该索引访问的统计信息。pg_stat_user_indexes和pg_stat_sys_indexes视图包含相同的信息,但是被过滤得只分别显示用户和系统索引
通过pg_stat_user_indexes可以知道当前数据库中哪些是用的很频繁的索引,哪些是无效索引,无效索引可以进行删除,可以减少磁盘空间的使用和提升INSERT,UPDATE,DELETE性能。
索引可以被简单索引扫描、“位图”索引扫描以及优化器使用。在一次位图扫描中,多个索引的输出可以被通过 AND 或 OR 规则组合,因此当使用一次位图扫描时难以将取得的个体堆行与特定的索引关联起来。因此,一次位图扫描会增加它使用的索引的pg_stat_all_indexes.idx_tup_read计数,并且为每个表增加pg_stat_all_tables.idx_tup_fetch计数,但是它不影响pg_stat_all_indexes.idx_tup_fetch。如果所提供的常量值不在优化器统计信息记录的范围之内,优化器也会访问索引来检查,因为优化器统计信息可能已经“不新鲜”了。
列名 | 示例值 | 说明 |
---|---|---|
relid | 16384 | 表的OID |
indexrelid | 16387 | 索引的OID |
schemaname | public | 模式名 |
relname | test | 表名 |
indexrelname | test_pkey | 索引名 |
idx_scan | 2005 | 通过索引扫描的次数,如果这个值很小,说明这个索引很少被用到,可以考虑进行删除。 |
idx_tup_read | 202003 | 通过任意索引方法返回的索引行数 |
idx_tup_fetch | 202003 | 通过索引方法返回的数据行数 |
postgres=# select * from pg_stat_all_indexes;
relid | indexrelid | schemaname | relname | indexrelname | idx_scan | idx_tup_read | idx_tup_fetch
-------+------------+------------+-------------------------+-----------------------------------------------+----------+--------------+---------------
16535 | 16537 | pg_toast | pg_toast_16532 | pg_toast_16532_index | 0 | 0 | 0
16532 | 16538 | public | goods | goods_pkey | 1008 | 1008 | 1008
16384 | 16387 | public | test | test_pkey | 2005 | 202003 | 202003
16397 | 16399 | pg_toast | pg_toast_16391 | pg_toast_16391_index | 0 | 0 | 0
16391 | 16400 | public | alerts | index_attack_alarm_attack_result | 2 | 20169 | 40
16391 | 16401 | public | alerts | index_attack_alarm_attack_type | 0 | 0 | 0
16391 | 16402 | public | alerts | index_attack_alarm_suffer_branch_id | 0 | 0 | 0
16391 | 16404 | public | alerts | index_attack_alarm_last_time | 0 | 0 | 0
16391 | 16405 | public | alerts | index_attack_alarm_priority | 13 | 15020 | 0
16391 | 16406 | public | alerts | index_attack_alarm_reliability | 14 | 1018925 | 0
16391 | 16407 | public | alerts | index_attack_alarm_rule_id | 0 | 0 | 0
16391 | 16408 | public | alerts | index_attack_alarm_sub_attack_type | 0 | 0 | 0
16391 | 16409 | public | alerts | attack_alarm_pkey | 1172 | 1011218 | 1223
4159 | 4160 | pg_toast | pg_toast_2600 | pg_toast_2600_index | 0 | 0 | 0
2830 | 2831 | pg_toast | pg_toast_2604 | pg_toast_2604_index | 0 | 0 | 0
...