杀死“CLUSTER ON index”对数据库有危险吗?

时间:2012-04-24 16:02:46

标签: postgresql kill clustered-index

所有问题都在标题中,

如果我们在1亿行表上终止集群查询,那么它对数据库会有危险吗?

查询现在运行了2个小时,我需要明天早上访问该表(希望12小时左右)。

我认为它会更快,我的数据库在raid ssd和Bi-Xeon处理器上运行。

感谢您的明智建议。

西特

2 个答案:

答案 0 :(得分:2)

不,您可以毫无风险地终止群集操作。在操作完成之前,没有任何内容更改为原始table-和indexfiles。来自manual

  

使用索引扫描时,会创建表的临时副本   包含索引顺序中的表数据。临时副本   表中的每个索引也都是创建的。因此,你需要自由   磁盘上的空间至少等于表大小和的大小   索引大小。

     

使用顺序扫描和排序时,也会使用临时排序文件   创建,以便临时空间峰值要求尽可能高   表大小加倍,加上索引大小。

答案 1 :(得分:0)

正如@Frank所指出的,这样做完全没问题。

假设您希望将来运行此查询并假设您拥有一个服务窗口,并且可以承受一些停机时间,我会调整一些设置以提升性能。

在您的配置中:

  1. 关闭fsync,以获得更高的文件系统吞吐量
  2. Fsync代表文件系统同步。启用fsync后,数据库将等待文件系统在每次刷新页面时提交。

    1. 最大化您的maintenance_work_mem
    2. 只需占用所有可用内存即可,因为它不会在生产时间内分配。我不知道你的表和你正在处理的索引有多大,当它们可以完全加载到主内存中时,它会运行得更快。