我运行了这个命令:
cluster verbose address using address_locality_lookup;
并得到了这个结果:
INFO: clustering "dba.address" using sequential scan and sort
INFO: "address": found 0 removable, 29323623 nonremovable row versions in 1139047 pages
DETAIL: 0 dead row versions cannot be removed yet.
CPU 26.00s/8286.70u sec elapsed 8342.01 sec.
CLUSTER
Time: 9366585.421 ms
这是否表明聚类成功(即所有行现在都按address_locality_lookup
索引指示的顺序排列)?
“可移动”和“不可移动”分别表示什么?
是的,这意味着它成功了。通常(当客户端设置是这样的时候),你会得到执行命令的回显,就像
CLUSTER
在这种情况下一样。在较新的 PostgreSQL 版本中,
CLUSTER
并且VACUUM FULL
做的大部分是相同的(事实上,据我所知,它们共享相同的代码),唯一的区别是前者的排序。您看到的是不同VACUUM
命令的典型输出,描述您的表中没有过时的行。这些可以是某些现有行的旧版本,被替换
UPDATE
或删除的行,在这两种情况下都没有被先前的VACUUM
操作删除。这些被标记为“可移动”,而不是一些可能仍被某些开放交易引用的标记。当交易结束时,这些也将是可移动的。