Postgres 9.6;Centos 6.7; 24核
BigTable1包含1,500,000,000行;重量180GB。
max_worker_processes = 20
max_parallel_workers_per_gather = 12
Run Code Online (Sandbox Code Playgroud)
1)跑步时
EXPLAIN
SELECT
date_id, id1, id2, id3, id4, topdomain, ftype, SUM(imps), SUM(cls)
FROM BigTable1
WHERE
date_id BETWEEN 2017021200 AND 2017022400
AND date_id BETWEEN 2017020000 AND 2017029999
GROUP BY
date_id, id1, id2, id3, id4, topdomain, ftype;
Run Code Online (Sandbox Code Playgroud)
完全没有使用“计划的工人:”。为什么?
2)在定义的会话中运行相同查询时
set max_parallel_workers_per_gather = 5;
Run Code Online (Sandbox Code Playgroud)
出现“计划的工人数:5”。执行时间仅缩短了25%。
2.1)为什么仅在此设置之后出现“计划的工人:”?2.2)为什么在以max_parallel_workers_per_gather = 5运行时看不到更好的改进?
谢谢!。