【发布时间】:2018-09-16 04:58:27
【问题描述】:
我需要删除大约 80% 的 500Gb Postgresql 数据库。 到目前为止,我已经成功地为大约 50Gb 的行运行了删除命令,并在继续之前暂停了。 (这花了很长时间,也许一个小时)
我注意到在删除大约 50Gb 的数据后,没有释放额外的磁盘空间,但是当我运行“htop”时可以观察到一些内存密集型 postgres 进程。我是否正确假设这是死行,需要在释放磁盘空间之前对其进行清理?
这个问题的第二部分是,如果我没记错第一部分,我最好删除所有行,然后允许自动真空发生吗?在我有机会继续我的行删除命令列表之前,似乎自动真空(或其他一些密集的后台进程)已经自行启动。我应该继续还是应该优雅地告诉它先停止?
【问题讨论】:
-
autovacuum 不执行
vacuum full- 因此它不一定会释放已删除的元组磁盘空间,但会将它们标记为可重用。是的 - 这是正常的。不 - 你不应该关心它 - 继续你的工作,让 autovacuum 来执行它
标签: postgresql vacuum autovacuum