【发布时间】:2020-09-14 11:37:48
【问题描述】:
如何确定 Postgres 数据库中需要重新索引的所有索引?并且我需要安排一个作业来重新索引 Postgres 中的索引,我应该多久运行一次?
索引的统计数据收集可以处理自动清理部分的自动分析,还是我们应该单独运行它?
【问题讨论】:
标签: postgresql indexing postgresql-9.4 amazon-aurora reindex
如何确定 Postgres 数据库中需要重新索引的所有索引?并且我需要安排一个作业来重新索引 Postgres 中的索引,我应该多久运行一次?
索引的统计数据收集可以处理自动清理部分的自动分析,还是我们应该单独运行它?
【问题讨论】:
标签: postgresql indexing postgresql-9.4 amazon-aurora reindex
您通常不需要重新索引 PostgreSQL 索引。随着时间的推移,它们会变得有些支离破碎,但这是正常的。
也就是说,您可以使用 pgstattuple 扩展中的 pgstatindex 函数来检查索引:
CREATE EXTENSION pgstattuple;
SELECT avg_leaf_density FROM pgstatindex('items_1_pkey');
avg_leaf_density
------------------
88.92
(1 row)
该索引非常密集,密度与fillfactor(90)大致相同。如果值低于 20 左右,请考虑重新索引。
【讨论】: