我正在尝试相同的查询
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 = 4
首先使用 pgAdmin3 LTS 1.23
查询以 4 个线程并行运行,并在 12 秒内完成
第二次使用 DbVisualizer 10.0.21
查询仅在单线程中运行并在 70 秒内完成
(是的,我用 show 命令检查了它,并行设置如上所述)
第三个是我的 Navicat 同事
查询以 4 个线程并行运行,并在 30 秒内完成
那么谁来决定如何处理服务器或客户端的查询呢?
编辑:
问题似乎出在 DbVisualizer 上,奇怪的是,如果我只运行查询,它不会并行化,但是当使用解释分析选项时它确实如此,我在服务器上检查了这一点以确保,即屏幕截图
这是来自 pgAdmin 的解释分析
https://explain.depesz.com/s/tP8Pi
这是 DbVisualizer 的执行计划: