工作分配不均匀, 某个不幸的 PX 进程需要完成大部分的工作, 消耗 的 db time 会比其他 PX 进程多, SQL 执行时间会因此被明显延长....Hash 分发,数据倾斜造成执行倾斜
通过 hint 使用 hash 分发, 测试 sql 如下:
使用 hash 分发, SQL 执行时间为 58 秒, db time 2.1 分钟....红色的 PX 进程作为生产者, 分别对 customer_skew 和 lineorder_skew 完成并行扫描并通过 table queue0/1, hash 分发给蓝色的 PX 进程....实例2的蓝色 PX 进程p001消耗了57.1秒的db time, sql执行时间58秒,这个PX进程在sql执 行过程中一直是活跃状态....查询执行时间为 54 秒, db time 也为 54 秒。虽然我们指定使用 Dop=4 并行执行, 执行计划实际是串行的。