pg_stat_all_indexes 是一个 统计视图,用于显示当前数据库中每个索引的访问统计信息。
pg_stat_all_indexes 在 PostgreSQL 7.2 中添加。
按 PostgreSQL 版本定义
pg_stat_all_indexes (PostgreSQL 19)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------------------------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
last_idx_scan | timestamp with time zone | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 18)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------------------------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
last_idx_scan | timestamp with time zone | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 17)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------------------------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
last_idx_scan | timestamp with time zone | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 16)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------------------------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
last_idx_scan | timestamp with time zone | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 15)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 14)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 13)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 12)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 11)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 10)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Collation | Nullable | Default
---------------+--------+-----------+----------+---------
relid | oid | | |
indexrelid | oid | | |
schemaname | name | | |
relname | name | | |
indexrelname | name | | |
idx_scan | bigint | | |
idx_tup_read | bigint | | |
idx_tup_fetch | bigint | | |
pg_stat_all_indexes (PostgreSQL 9.6)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.5)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.4)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.3)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.2)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.1)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 9.0)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
pg_stat_all_indexes (PostgreSQL 8.4)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
View definition:
SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch
FROM pg_class c
JOIN pg_index x ON c.oid = x.indrelid
JOIN pg_class i ON i.oid = x.indexrelid
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = ANY (ARRAY['r'::"char", 't'::"char"]);
pg_stat_all_indexes (PostgreSQL 8.3)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
View definition:
SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch
FROM pg_class c
JOIN pg_index x ON c.oid = x.indrelid
JOIN pg_class i ON i.oid = x.indexrelid
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = ANY (ARRAY['r'::"char", 't'::"char"]);
pg_stat_all_indexes (PostgreSQL 8.2)
View "pg_catalog.pg_stat_all_indexes"
Column | Type | Modifiers
---------------+--------+-----------
relid | oid |
indexrelid | oid |
schemaname | name |
relname | name |
indexrelname | name |
idx_scan | bigint |
idx_tup_read | bigint |
idx_tup_fetch | bigint |
View definition:
SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch
FROM pg_class c
JOIN pg_index x ON c.oid = x.indrelid
JOIN pg_class i ON i.oid = x.indexrelid
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = ANY (ARRAY['r'::"char", 't'::"char"]);
变更历史
- PostgreSQL 19
- 添加了列
stats_reset(提交 a5b54325)
- 添加了列
- PostgreSQL 16
- 添加了
last_idx_scan列(提交 c0374718)
- 添加了
- PostgreSQL 7.2
- 添加 (提交 8d80b0d9)
示例
pg_stat_all_indexes 记录的示例内容
postgres=# SELECT * FROM pg_stat_all_indexes WHERE idx_scan > 0 LIMIT 1\gx -[ RECORD 1 ]-+--------------------------------- relid | 2619 indexrelid | 2696 schemaname | pg_catalog relname | pg_statistic indexrelname | pg_statistic_relid_att_inh_index idx_scan | 56826314 idx_tup_read | 285116312 idx_tup_fetch | 30899327
参考资料
- PostgreSQL 文档: pg_stat_all_indexes
有用链接
- PostgreSQL 有效监控:在 PostgreSQL 16 中利用 pg_stat_all_tables 和 pg_stat_all_indexes 视图 - 2023 年 7 月 Dave Page / EnterpriseDB 的博客文章
