目前使用 Postgres 14。
运行CLUSTER sometable USING someindex;
很棒,但是是否有一个查询可以确定表在多次更新和删除后变得如何“非集群”?
谷歌搜索并阅读https://www.postgresql.org/docs/14/sql-cluster.html只是说“设置定期维护脚本......以便定期重新集群所需的表”,这是没有帮助的,因为它没有没有给出任何关于如何确定定期重新聚类的周期的指示。
目前使用 Postgres 14。
运行CLUSTER sometable USING someindex;
很棒,但是是否有一个查询可以确定表在多次更新和删除后变得如何“非集群”?
谷歌搜索并阅读https://www.postgresql.org/docs/14/sql-cluster.html只是说“设置定期维护脚本......以便定期重新集群所需的表”,这是没有帮助的,因为它没有没有给出任何关于如何确定定期重新聚类的周期的指示。
您可以使用
correlation
从(或在后台)收集的列统计信息作为指标:ANALYZE
autovacuum
手册:
用作前导索引字段的列的相关值可以为您提供指导。越接近 0,您就越需要重新运行
CLUSTER
。很大程度上取决于您的用例,您需要多接近完美的排序顺序。增加列的统计目标和/或
ANALYZE
首先运行以提高准确性。看:对于多列索引,第一列应该足以作为指标。或者您可以使用多元统计来提高特殊情况的有效性。
您可能会考虑使用一种(高级)社区工具来替换
CLUSTER
. 看: