我有一些表可以从Postgres SQL 中的CLUSTER ON/CLUSTER USING中受益匪浅:
# CLUSTER table USING index_name;
# ANALYZE VERBOSE table;
# CLUSTER VERBOSE;
Run Code Online (Sandbox Code Playgroud)
维护任务会定期运行 CLUSTER VERBOSE 以保持最新状态。但是,在运行 CLUSTER VERBOSE 之前,是否可以运行测试来查看表的碎片化程度?也许是这样的:
# CLUSTER ANALYZE
table 40000 records. 4000 observed clusters, 5000 potential clusters (20% fragmentation)
Run Code Online (Sandbox Code Playgroud)
请注意,我使用 CLUSTER,因此同时访问的数据被“整理”为少量磁盘块。例如,每个页面都有数千个属性。aCLUSTER page_attribute USING page_id;
将所有属性放在一起,大大减少了磁盘负载。