ITPub博客

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

Oracle 作者:不一样的天空w 时间:2018-11-08 21:59:02 0 删除 编辑

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/31397003/viewspace-2219305/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-09-22

  • 博文量
    732
  • 访问量
    340462