我如何找出需要在Postgres数据库中重新建立索引的所有索引?我需要安排一项工作以在Postgres中重新建立索引的索引,我应该多久运行一次?
并且可以收集对索引的统计信息进行自动抽真空部分的自动分析,还是我们应该单独运行它?
您通常不需要重新索引PostgreSQL索引。随着时间的流逝,它们将变得有些零散,但这是正常的。
也就是说,您可以使用pgstatindex
扩展名中的pgstattuple
函数来检查索引:
CREATE EXTENSION pgstattuple;
SELECT avg_leaf_density FROM pgstatindex('items_1_pkey');
avg_leaf_density
------------------
88.92
(1 row)
该指数完全致密,其密度与fillfactor
大致相同(90)。如果该值降到20以下,请考虑重新索引。