Postgresql9.6:为什么并行查询的10个循环比1个循环慢
博士后9.6;Centos 6.7;24芯 BigTable1包含150000000行;重量180GB。 最大工作进程数=20个每个聚集最多并行工作进程数=12个 完成并比较了两项测试: 1) 运行explain Analysis时,从BigTable1中选择count(*) 我们有“工人计划:10”,查询执行时间为448秒。 解释分析输出是:Postgresql9.6:为什么并行查询的10个循环比1个循环慢,postgresql,sql-execution-plan,postgresql-9.6,Postgresql,Sql Execution Plan,Postgresql 9.6,博士后9.6;Centos 6.7;24芯 BigTable1包含150000000行;重量180GB。 最大工作进程数=20个每个聚集最多并行工作进程数=12个 完成并比较了两项测试: 1) 运行explain Analysis时,从BigTable1中选择count(*) 我们有“工人计划:10”,查询执行时间为448秒。 解释分析输出是: Parallel Seq Scan on BigTable1 (cost=0.00..20137165.46 rows=**177208946** wi
Parallel Seq Scan on BigTable1 (cost=0.00..20137165.46 rows=**177208946** width=0) (actual time=0.023..417798.820 rows=159481670 loops=10)
我们看到几乎所有用于读取和统计BigTable1中数据的时间
2) 使用定义的集合max\u parallel\u workers\u per\u gather运行相同查询时=0
执行时间为547秒
Aggregate (cost=38306668.21..38306668.22 rows=1 width=8) (actual time=547132.254..547132.255 rows=1 loops=1)
-> Append (cost=0.00..34319310.77 rows=1594942978 width=0) (actual time=0.562..444920.155 rows=**1595067208** loops=1)
-> Seq Scan on category_data_prt_201702 (cost=0.00..34313881.12 rows=1594880512 width=0) (actual time=0.026..312120.207 rows=1594816703 loops=1)
问题是:
- 为什么10个循环的工作速度比1个循环慢
- 如果没有并行的查询花费了时间,即以下内容是什么意思:
Aggregate(成本=38306668.21..38306668.22行=1宽度=8)(实际时间=547132.254..547132.255行=1循环=1)
->追加(成本=0.00..34319310.77行=**1594942978**宽度=0)(实际时间=0.562..444920.155行=159506728循环=1)
- 为什么在并行查询执行测试中没有那些“追加/聚合”部分