oracle pq distribute,详解hints PQ_DISTRIBUTE

PQ_DISTRIBUTE是并行的hints中稍微复杂一点的一个

下面就这个hints做以下说明:

1.使用格式

/*+ PQ_DISTRIBUTE(tablespec outer_distribution inner_distribution )*/

tablespec:表名

outer_distribution:外表如何分割

inner_distribution:内表如何分割

2.选项说明

(1)HASH, HASH

当两个表大小相当而且是采用hash-join 或 sort merge join时

将每个表的连接键hash到不同的查询服务器

hash完成之后 查询服务器将只在成对匹配的partition之间做join

(2)BROADCAST, NONE

当外表比内表小的多 或者至少inner table size * number of query servers > outer table size

外表的所有行被广播到每一个的查询服务器

内表的行被随机分区

(3)NONE, BROADCAST

当内表比外表小的多 或者至少inner table size * number of query servers < outer table size

内表的所有行被广播到每一个查询服务器

外表被随机分区

(4)PARTITION, NONE

内表必须在连接键上分区

外表的所有行被重新分区以和内表匹配

通常在外表的分区数量和查询服务器个数接近相等时使用

(5)NONE, PARTITION

外表必须在连接键上分区

内表的所有行被重新分区以和外表匹配

通常在内表的分区数量和查询服务器个数接近相等时使用

(6)NONE, NONE

所有的表必须在连接键上对等分区

每个查询服务器只需和自己匹配的分区执行join操作

3.jcq0的分析

最佳连接:(6)这种情况是full partition-wise join

次佳连接:(4)(5)这种情况是 partial partition-wise join

(2)(3)当做连接时的一个表非常小时,可以采用BROADCAST方式

次次连接:(1)如果两个表的分区情况,大小情况和(2)(3)(4)(5)(6)都不匹配

这也是一个不错的选择

4.更多内容

关于hints pq_distribute的更多信息请参考:

关于partial partition-wise join及full partition-wise join的更多信息请参考:

Jonathan Lewis 的讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值