Postgresql 9.3 COMMITs

nnvyjq4y  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(2)|浏览(145)

在启用慢速查询日志记录后,我们会看到很多COMMIT在生产数据库上花费了几秒以上的时间来完成。在调查中,这些通常是简单的事务:获取一行,UPDATE该行,COMMIT。这些特定事务中的SELECT s和UPDATE s没有被记录为慢。我们能做些什么吗,或者我们可以使用的工具,来找出这些缓慢提交的原因?我们在SSD上运行,并且正在流式传输到从属设备,如果这有区别的话。

rur96b6h

rur96b6h1#

流传输到从设备会在提交时产生额外的IO。根据从设备的位置及其配置方式,您可能需要优化网络,获得更快的驱动器,或采取其他措施来提高从设备上的吞吐量。对于测试,您可以禁用从设备(最好是在某种测试服务器上),以查看启用和禁用从设备时的性能。
其次,检查被更新表上的任何“after”触发器。第三,检查被更新表上的任何延迟约束。
最后两个将在提交时产生额外的开销。

tquggr8v

tquggr8v2#

Postgres提交是同步的。这意味着它们将等待WAL写入完成,然后再移动到下一个。您可以在配置文件中调整WAL设置以进行调整。
您可以在会话/用户级别或数据库级别使用配置文件中的synchronous_commit将提交级别设置为异步。
在数据库方面。
清空你的表并更新统计数据。这将消除死元组,因为你执行的更新会有很多死元组。

VACUUM ANALYZE

字符串

相关问题