假设我想要CLUSTER
一张桌子。无法知道需要多长时间,所以我只是运行它。几个小时后,我需要数据,所以我取消了CLUSTER
命令。CLUSTERing 是否与临时表/文件一起工作,这样如果我在它完成之前取消,所有这些都将被删除并且它运行的时间被浪费或者它是否使更改“实时”以便在几个小时后取消并不是完全浪费时间?
假设我想要CLUSTER
一张桌子。无法知道需要多长时间,所以我只是运行它。几个小时后,我需要数据,所以我取消了CLUSTER
命令。CLUSTERing 是否与临时表/文件一起工作,这样如果我在它完成之前取消,所有这些都将被删除并且它运行的时间被浪费或者它是否使更改“实时”以便在几个小时后取消并不是完全浪费时间?
如果您在
CLUSTER
没有参数的情况下调用,则根本不能ROLLBACK
,因为这仅适用于交易。引用手册:但是你谈论“
CLUSTER
一张桌子”,所以假设你的意思是表格:这是交易性的。取消这个命令应该不会造成任何伤害。Postgres 在后台构建新表(和索引),完成后只更新对物理文件的引用。再次使用手册:
大胆强调我的。但是当您在命令完成之前取消命令时,进入临时表的工作将丢失。
CLUSTER
甚至不更新表统计信息,这就是为什么您应该ANALYZE
在CLUSTER
.关于:
您可能对 感兴趣
pg_repack
,它可以像CLUSTER
没有独占锁一样做同样的事情,因此您可以使用它而不会把自己逼到墙角——甚至在您根本无法承受停机时间的情况下。不过,该扩展并未随 Postgres 一起提供。你必须自己安装它。它在许多云服务上不可用。
有关的: