gpt4 book ai didi

PostgreSQL 长 VACUUM

转载 作者:行者123 更新时间:2023-11-29 11:31:30 28 4
gpt4 key购买 nike

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

服务器有一个四代码至强 2.66 GHz 处理器、12 GB 或 RAM 和一个 RAID Controller ,以 RAID 1 配置连接到 2 个 10K rpm 146 GB SAS 硬盘;它正在运行 Suse Linux。我想知道...

现在,首先,VACUUM postmaster 进程似乎只使用一个核心。其次,我没有看到 I/O 写入与 I/O 空闲时间的比率非常高。第三,通过调用 procinfo,我可以推断出 VACUUM 进程大部分时间 (88%) 都在等待 I/0。

那么,为什么它不通过线程利用更多内核来使 RAID Controller 过载(获得高 I/O 写入空闲率)?如果 I/O 负载不高,为什么还要等待 I/O?为什么它没有掌握所有这些权力/资源的速度更快?在我看来,VACUUM 可以而且应该是多线程的,尤其是当它在一个巨大的表上工作并且它是唯一一个工作的时候!

此外,他们是否有一种配置 postgresql.conf 以使其多线程运行此类 VACUUM 的方法?我可以杀死它并仍然从它的部分清理中受益吗?我需要在那张 table 上工作。

[我正在使用 PostgreSQL 8.1]

再次感谢

最佳答案

您没有说明您使用的是什么版本的 PostgreSQL。有没有可能是pre-8.0?

我遇到过完全相同的情况。你最好的:

  • 消除真空
  • 使用 pg_dump -t 选项备份表
  • 放下 table
  • 恢复表格

如果您使用的是 8.x,请查看 autovacuum 选项。 Vacuum 是单线程的,您无法使其使用多线程。

关于PostgreSQL 长 VACUUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com