执行计划
关联键
执行sql操作时,需要进行数据关联的键值,比如group by,join
分布键
根据一个键值,将数据分布在不同的segment上
广播和重分布
关联的数据必须在同一个节点上才能进行计算,数据的初次分布是通过分布键将数据分布在不同的segment上,但是当某个表的关联键与分布键不是同一个键时,需要通过重分布或者广播来实现数据关联
- CASE1:a表关联键是分布键,b表关联键不是分布键,进行a、b表关联
类别 | 操作 | 操作的数据量 |
重分布 | 通过关联键将b表数据重新分布到不同的segment上,再和a表进行关联 | 重分布的数据量为某表的数据量 P1 = N |
广播 | a表数据进行广播,即每个segment都有一份a表的数据,再和b表关联 | 广播的数据量是a表数据量 P2 = M * segment数L |
结果:P1小,选择重分布;P2小,选择广播
问题:广播表的为何选择a表,因为如果b表广播一定大于b表的重分布,就没有必要了