陈焕生:深入理解Oracle的并行执行(四)
到目前为止,所有的测试只涉及两个表的连接。如果多于两个表,就需要至少两次的hashjoin,数据分发次数变多,生产者消费者的角色可能互换,执行计划将不可避免变得复杂。执行路径变长,为了保证并行执行的正常进行,执行计划可能会插入相应的阻塞点,在hashjoin时,把符合join条件的数据缓存到临时表,暂停数据继续分发。本节我使用一个三表连接的sql来说明连续hashjoin时,不同分发方式的不同行为。测试三个表连接的sql如下,加入part表,使用hint让优化器两次hashjoin都使用broadcast分发。ReplicateSQL查询性能类似。SQL执行时间为42秒,dbtime
暂无评论