是否可以获取索引的最后使用日期



我想收集PostgreSQL中索引的统计信息
我找到了一种方法来收集诸如索引扫描次数、索引大小等统计信息。这是一个查询:

SELECT
current_database()                             AS datname,
t.schemaname,
t.tablename,
psai.indexrelname                              AS index_name,
pg_relation_size(i.indexrelid)                 AS index_size,
CASE WHEN i.indisunique THEN 1 ELSE 0 END      AS "unique",
psai.idx_scan                                  AS number_of_scans,
psai.idx_tup_read                              AS tuples_read,
psai.idx_tup_fetch                             AS tuples_fetched
FROM
pg_tables t
LEFT JOIN pg_class c ON t.tablename = c.relname
LEFT JOIN pg_index i ON c.oid = i.indrelid
LEFT JOIN pg_stat_all_indexes psai ON i.indexrelid = psai.indexrelid
WHERE
t.schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY 1, 2;

然而,我不知道如何收集索引的最后使用日期。这在PostgreSQL中可能吗?

这是不可能的。

如果你想知道一个索引是否在下周使用,你可以看看现在和一周后的pg_stat_all_indexes.idx_scan,看看这个数字是否增加了。监控系统非常适合这一点。

pg_stat_all_indexes视图中的每一行都包含一个索引的信息。此视图中没有指示解析索引的最近日期和时间的列。

但是,可以重置统计信息:pg_stat_reset()

如果idx_scan字段变为>0.

相关内容

  • 没有找到相关文章

最新更新