SQL调优(SQL TUNING)并行查询提示(Hints)之pq_distribute的使用


pq_distribute提示通常被用于提升数据仓库中分区表间的连接操作性能。 pq_distribute提示允许你确定参与连接的表数据行在生产和消费并行查询服务进程间如何分配。 pq_distribute提示接受三个参数:表名,外分配和内分配。
当执行并行查询连接时,我们总是想着避免PARALLEL_TO_PARALLEL执行计划。PARALLEL_TO_PARALLEL操作意味着输入输出数据流都是并行的,导致连接性能低下。另一方面,PARALLEL_COMBINED_WITH_PARENT操作意味着将排序和合并操作组合进一个操作。
使用pq_distribute提示前,有些Oracle DBA通常通过删除内部表的CBO统计信息来欺骗SQL优化器,以强制采用 PARALLEL_COMBINED_WITH_PARENT操作。因为SQL优化器根据这些CBO统计信息来评估候选广播表的大小。当表大于某个阈值时,表将通过PARALLEL_TO_PARALLEL 执行模式连接,这将导致很低的性能。
pq_distribute提示可以接受六个参数组合 。记住,参数顺序是外分配在前,内分配在后。
1)        pq_distribute(tab_name, hash,hash):该组合将表数据行通过连接键上的哈希函数分配给消费并行查询服务进程。完成映射后,每个查询服务进程在一对结果分区间进行连接。当表大小相当且通过哈希或排序合并实现连接操作时,推荐使用该提示。
2)        pq_distribute(tab_name,broadcast, none):该组合确保外表所有数据行被广播到每个消费并行服务进程,同时,内表数据行被随机分区。当外表比内表小很多时,推荐使用该提示。一个重要原则是,如果内表大小乘以并行服务进程数大于外表大小,则使用broadcast/none。
3)        pq_distribute(tab_name, none,broadcast):该组合强制内表所有的数据行广播给每个消费并行查询服务进程,同时,外表数据行被随机分区。当内表比外表小时,推荐使用该提示。一个重要原则是,当内表大小乘以并行查询服务进程数小于外表大小时,推荐使用none/broadcase提示。
4)        pq_distribute(tab_name,partition, none):该组合通过内表分区来映射外表数据行,同时,内表必须按连接键分区。当内表分区数等于或接近并行查询服务进程数时,推荐使用该提示。
5)        pq_distribute(tab_name, none,partition):该组合通过外表分区来映射内表数据行,同时,外表必须按分区键分区。当外表分区数等于或接近并行查询服务进程数时,推荐使用该组合。
6)        pq_distribute(tab_name, none,none):该组合中,每个并行查询服务器在一对匹配的分区间进行连接操作,每个分区来自一张表。两张表在连接键上必须分区相等。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8484829/viewspace-2132981/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8484829/viewspace-2132981/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值