首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL如何在使用--作业参数时查找在真空中导致死锁的原因

PostgreSQL如何在使用--作业参数时查找在真空中导致死锁的原因
EN

Stack Overflow用户
提问于 2016-09-11 20:43:58
回答 1查看 1.5K关注 0票数 2

如何在PostgreSQL 9.5中找到在数据库上使用选项-作业并行运行完全真空作业时导致死锁错误/失败的原因。

我只得到了一些进程号和表名..。如何防止这种情况,使我能够成功地完成完全真空的数据库并行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 12:02:04

在加载下完成VACUUM FULL是一项相当困难的任务。问题是Postgres正在缩小表占用的空间,因此任何数据操作都会影响到这一点。

要实现完全真空,您有以下几种选择:

  • 锁定对真空表的访问权限。不过,不确定获取某种独占锁是否会有所帮助。您可能需要阻止对应用程序级别上的表的访问。
  • 使用create new table - swap (rename tables) - move data - drop original技术。这样,您就不会缩小原始表下的空间,只需删除该表即可释放它。当然,您正在重建所有索引,重定向FKs等。

另一个问题是:你需要VACUUM FULL吗?VACUUM ANALYZE唯一不做的事情就是压缩文件系统上的表。如果您不是非常有限的磁盘空间,您不需要做一个完全真空那么多。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39440460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档