当前位置:  开发笔记 > 数据库 > 正文

PostgreSQL Long VACUUM

如何解决《PostgreSQLLongVACUUM》经验,为你挑选了1个好方法。

我目前正在清理一个包含2个索引和2.5亿个活动行以及大约尽可能多的死行(或更多)的表.我从我的客户端计算机(笔记本电脑)向我的服务器发出了命令VACCUM FULL ANALYZE.它在过去3-4天左右开展业务; 我想知道它是否会很快结束,因为我还有很多工作要做!

该服务器具有四码Xeon 2.66 GHz处理器,12 GB或RAM以及RAID控制器,该控制器连接到RAID 1配置中的2 x 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]

谢谢了



1> Mark Harriso..:

你没有说你正在使用什么版本的PostgreSQL.有可能是8.0之前的吗?

我有完全相同的情况.你最好的:

杀死真空

使用pg_dump -t选项备份表

放下桌子

恢复表

如果您使用的是8.x,请查看autovacuum选项.真空是单线程的,没有什么可以让它使用多线程.


当真空被杀死时,没有什么不好的事情发生,到目前为止你只是失去了回收表空间所做的工作.我们有一份工作会在上午8点自动杀死任何吸尘器,这样当用户进来时就不会卡住.如果发生这种情况,我们会在第二天晚上转储/恢复.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有