如何通过trace判断join算子无法并行
出现数据量太少或系统剩余线程不足时join会退化为串行执行,出了trace里算子为串行外,还多一行
get DOP = 1: idle=xxx, parallel_degree=0, max_parallel=xxx
下面是两种出现join无法并行的trace示例,是在一个8核的机器上的trace
A.数据太少
BEGIN Join
cnd(0): t1.i = t3.a
prepare to use hash join
traverse dim: 80 tuples, match dim: 7168 tuples
get DOP = 1: idle=16,parallel_degree=0, max_parallel=16
Hybrid hash join: data will be split into 1 partitions
BEGIN hybrid hash join: partition(-1/1):
并发数太多
BEGIN Join
cnd(0): t1.i = t3.a
prepare to use hash join
traverse dim: 80 tuples, match dim: 114688 tuples
get DOP = 1: idle=6,parallel_degree=0, max_parallel=16
Hybrid hash join: data will be split into 1 partitions
BEGIN hybrid hash join: partition(-1/1):
在hybrid hash join中, match表的数据小于65536行会认为数据太少
当需要申请的线程大于idle数时,如申请8, 剩余6, 会退化为1
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526