【发布时间】:2015-09-17 12:09:05
【问题描述】:
我知道多个连接在 postgres 中使用多个 CPU 内核,因此并行运行。但是当我执行一个长时间运行的查询时说 30 秒(假设这无法进一步优化),I/O 被阻塞并且它不会从同一客户端/连接运行任何其他查询。
这是设计使然还是可以改进?
所以我假设运行长时间运行的查询的最佳方法是获取新连接,或者在该查询完成之前不在同一连接中运行任何其他查询?
【问题讨论】:
-
这是设计使然,不能(当前)更改。如果您想并行工作,您将需要打开第二个连接。即使 Postgres 能够在后端使用多个核心进行单个查询 - 启动该查询的连接仍然会被阻止。
-
我想这可能会回答你的问题:stackoverflow.com/questions/11620263/…
-
这并没有完全回答我的问题,但提供了更多的见解,谢谢。 @a_horse_with_no_name :我的假设在这里是否正确,如果它是一个长时间运行的查询,如果连接便宜,请在新连接上运行它/不要在同一连接中运行任何需要快速周转的查询?
-
在您编辑后发表评论。现在有意义了。谢谢 :)
标签: sql database performance postgresql