我在尝试相同的查询
select column_1, count(1)
from table
group by 1
order by 1 desc对于几个前端工具,我得到了非常不同的结果(我运行了几次查询以避免异常或兑现问题),我一直认为它依赖于服务器,而不是客户机工具。
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 = 4First与pgAdmin3 LTS 1.23
查询与4个线程并行运行,并在12s内完成。
第二代与DbVisualizer 10.0.21
查询只在单线程中运行,并在70年代内完成。
(是的,我使用show命令和并行设置检查了它,如上面所述)
第三次和Navicat的同事
查询与4个线程并行运行,在30秒内完成。
那么,是谁决定如何处理服务器或客户端的查询呢?
编辑:
问题似乎与DbVisualizer有关,奇怪的是,如果我只是运行查询,它并不并行,但是当使用了解释分析选项时,我在服务器上检查这一点,即屏幕截图。

下面是来自pgAdmin的解释分析
https://explain.depesz.com/s/tP8Pi
这是DbVisualizer的执行计划:
发布于 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,查询按顺序运行
发布于 2019-09-19 14:21:38
https://stackoverflow.com/questions/58008127
复制相似问题