我遇到了问题,需要一些建议。我通常是一名开发人员,但是由于最近我公司的人员变动,我现在是唯一的 IT 人员,所以我不得不涉足许多未知领域并且确实需要一些帮助。
我们正在运行 postgres 8.3。数据库正在尝试在大型对象表 (pg_catalog.pg_large_object) 上运行 AUTO_VACUUM 以防止事务 ID 回绕。我想我理解这意味着什么的基础知识。问题是,这张表是 750G,有 4.52 亿行。AUTO_VACUUM 大量写入磁盘,占用了磁盘空间(昨天它消耗了我们最后 250GB 的 1TB)。紧急中断后,我们以 1100GB 的空间和 100GB 的可用空间恢复运行。然而,一旦 postgres 重新启动并运行,它就会再次启动 AUTO_VACUUM 进程。如果我终止交易(我确定不推荐这样做),它就会重新启动。
所以这是我的问题:
1) 对于该表,完成 AUTO_VACUUM 进程需要多少空间?我如何确定这一点?
2) 有没有更好的方法来配置服务器来处理这种情况,以便在需要时不需要大量的磁盘空间?
3)如果不是 2,你建议如何解决这个问题?
我不是 DBA,也没有 linux 服务器管理经验,只是一个被要求身兼数职的开发人员。我正试图让 DBA 顾问帮助解决问题,但该公司正在回击。尽管我尽了最大努力,但他们似乎并不了解问题的严重性。
建议?注释?您可以提供的任何建议或指导将不胜感激。如果您需要更多信息,请告诉我。