首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询性能取决于前端工具吗?

查询性能取决于前端工具吗?
EN

Stack Overflow用户
提问于 2019-09-19 09:41:18
回答 2查看 172关注 0票数 1

我在尝试相同的查询

代码语言:javascript
复制
select column_1, count(1)
from table
group by 1
order by 1 desc

对于几个前端工具,我得到了非常不同的结果(我运行了几次查询以避免异常或兑现问题),我一直认为它依赖于服务器,而不是客户机工具。

代码语言:javascript
复制
PostgreSQL 11.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
max_parallel_workers = 8
max_parallel_workers_per_gather = 4

First与pgAdmin3 LTS 1.23

查询与4个线程并行运行,并在12s内完成。

第二代与DbVisualizer 10.0.21

查询只在单线程中运行,并在70年代内完成。

(是的,我使用show命令和并行设置检查了它,如上面所述)

第三次和Navicat的同事

查询与4个线程并行运行,在30秒内完成。

那么,是谁决定如何处理服务器或客户端的查询呢?

编辑:

问题似乎与DbVisualizer有关,奇怪的是,如果我只是运行查询,它并不并行,但是当使用了解释分析选项时,我在服务器上检查这一点,即屏幕截图。

下面是来自pgAdmin的解释分析

https://explain.depesz.com/s/tP8Pi

这是DbVisualizer的执行计划:

https://explain.depesz.com/s/RSWw

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-24 08:04:19

我已经联系了DbVis支持部门,我们发现了问题所在。是在JDBC驱动程序中。

下面是一些更详细的信息:

在测试期间,我们注意到在使用JDBC时不能触发并行查询。通过PSQL执行的查询显示了计划和执行的并行查询执行(例如:“工人计划: 2,工人启动: 2”。但是,通过JDBC运行相同的查询显示,查询是并行计划的,而不是并行执行的。典型的输出是:“工人计划: 2,工人启动: 0”。查询计划并行执行,但随后在单个线程中执行。我们只有在通过JDBC时才会看到这种行为。

https://github.com/pgjdbc/pgjdbc/issues/1246

DbVisualizer的解决方案是更改Max行

设置Max Rows = -1,查询并行运行

设置Max行> 0,查询按顺序运行

票数 0
EN

Stack Overflow用户

发布于 2019-09-19 14:21:38

我只能猜测。

  • 一种可能是DbVisualizer使用游标运行查询。这将防止使用并行查询。
  • 另一种可能是事务隔离级别为SERIALIZABLE。这也有同样的效果。

您可以看到并行查询在文件中的限制列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58008127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档