为什么Postgresql上的SET CONSTRAINTS ALL DEFERRED需要很长时间?

为什么Postgresql上的SET CONSTRAINTS ALL DEFERRED需要很长时间?,第1张

概述我们的Postgres 9.2.4服务器平均需要0.69秒(15000条语句)才能执行 SET CONSTRAINTS ALL DEFERRED 为什么会这样? 在表定义中使用INITIALLY DEFERRED而不使用SET CONSTRAINTS ..会消除这个时间还是只是将其隐藏在其他地方? Imho,这可能是因为每次运行此语句时,后台发生的事情都是对位于pg_catalog中的表定义的重大 我们的Postgres 9.2.4服务器平均需要0.69秒(15000条语句)才能执行

SET CONSTRAINTS ALL DEFERRED

为什么会这样?

在表定义中使用INITIALLY DEFERRED而不使用SET CONSTRAINTS ..会消除这个时间还是只是将其隐藏在其他地方?

解决方法 Imho,这可能是因为每次运行此语句时,后台发生的事情都是对位于pg_catalog中的表定义的重大更新声明.换句话说,您将死行添加到pg_catalog中,这会导致在适当的seq扫描期间访问的磁盘空间量越来越大.

如果你真的每天运行15k次语句,或许你需要对你的架构或工作流程进行冷酷的观察?

总结

以上是内存溢出为你收集整理的为什么Postgresql上的SET CONSTRAINTS ALL DEFERRED需要很长时间?全部内容,希望文章能够帮你解决为什么Postgresql上的SET CONSTRAINTS ALL DEFERRED需要很长时间?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1161003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存