我目前正在清理一个具有 2 个索引和 2.5 亿个活动行以及大约相同数量(或更多)的死行的表。我从我的客户端计算机(笔记本电脑)向我的服务器发出了命令 VACCUM FULL ANALYZE。它在过去 3-4 天左右一直在开展业务;我想知道它是否会很快结束,因为我还有很多工作要做!
该服务器有一个四码 Xeon 2.66 GHz 处理器、12 GB 或 RAM 和一个 RAID 控制器,该控制器连接到 RAID 1 配置中的 2 个 10K rpm 146 GB SAS HD;它正在运行 Suse Linux。我想知道...
现在,首先 VACUUM postmaster 进程似乎只使用一个核心。其次,我没有看到非常高的 I/O 写入与 I/O 空闲时间的比率。第三,通过调用procinfo
,我可以推断 VACUUM 进程大部分时间(88%)都在等待 I/0。
那么为什么不通过线程利用更多内核来使 RAID 控制器过载(获得高 I/O 写入空闲比)?如果 I/O 负载不高,为什么还要等待 I/O?为什么所有这些权力/资源都在它的手指上,但速度却没有更快?在我看来,VACUUM 可以而且应该是多线程的,特别是如果它在一张巨大的桌子上工作并且它是唯一一个工作的!
此外,他们是否可以配置 postgresql.conf 以使其多线程这样的 VACUUM?我可以杀死它并仍然从它的部分清理中受益吗?我需要在那张桌子上工作。
[我使用的是 PostgreSQL 8.1]
再次感谢