微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我们的Postgres 9.2.4服务器平均需要0.69秒(15000条语句)才能执行

SET CONSTRAINTS ALL DEFERRED

为什么会这样?

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐