我有一个 Web 应用程序显示由单独的进程生成并存储在 PostgreSQL 8.4 版中的数据。后端相当连续地写入,但 Web 应用程序中的大多数视图只执行只读 SELECT 查询。
根据 New Relic Python 代理的说法,我 30% 的视图处理时间都花在等待 COMMIT 完成上,在发出大量 SELECT 查询的视图中尤其糟糕,即使它们没有修改任何数据。
我希望一个只读事务在提交阶段几乎没有工作要做。Postgres 在 COMMIT 期间对这些只读查询做了什么?
我知道我可以关闭synchronous_commit
这些事务以隐藏视图中的延迟,我当然不关心只读事务的持久性,但我不明白为什么它应该是必要的,我很担心这样做可能会掩盖更深层次的错误配置。