首页 理论教育数据库性能管理与调优:HashJoin技术

数据库性能管理与调优:HashJoin技术

【摘要】:HASH JOIN是突出SORT MERGE JOIN优点并弥补其缺点的连接方法。该连接是对连接的对象表应用 HASH函数进行合并的方法。其特征是不仅只使用 HASH JOIN,而且提供通过并行处理大容量数据的最佳解决方案。但不建议在OLTP等状况下使用,因为HASH JOIN已为大容量处理进行优化,会占用大量系统资源。不会受JOIN条件(链路)索引有无的影响。2)使用标准由于链路使用HASH Key,因此仅用于EQUI-JOIN。在执行计划中成为HASHING对象的表始终在最前面,但如果是OUTER JOIN则完全相反。

HASH JOIN是突出SORT MERGE JOIN优点并弥补其缺点的连接方法。该连接是对连接的对象表应用 HASH函数进行合并的方法。其特征是不仅只使用 HASH JOIN,而且提供通过并行处理大容量数据的最佳解决方案。因此在处理大容量数据的SQL中,由HASH JOIN生成大部分执行计划时才能保证性能。但不建议在OLTP等状况下使用,因为HASH JOIN已为大容量处理进行优化,会占用大量系统资源。

1)特征

(1)先访问的表为build input,后访问的表则为probe input。

(2)进行大容量数据处理时可保证快速性能。

(3)不会受JOIN条件(链路)索引有无的影响。

(4)可最大限度地利用系统资源。

注意:调整HASH_area_size[2]参数值可进行并行处理,因此可最大限度地利用系统资源,保证良好的性能。

2)使用标准

由于链路使用HASH Key,因此仅用于EQUI-JOIN。

参考以下例子:(www.chuimin.cn)

优化器判断以上查询语句的执行计划的过程如下。

3)条件语句分析

(1)连接条件的索引:两侧均不存在。

(2)连接方法:HASH JOIN(参数 HASH_JOIN_ENABLED的值为TRUE时)。

在执行计划中成为HASHING对象的表始终在最前面,但如果是OUTER JOIN则完全相反。

【注释】

[1]driving表(驱动表):指Join对象表中先扫描的表,也称为outer表。inner table(内部表):指JOIN对象表中后面扫描的表。

[2]HASH_area_size是可以通过HASH Table的大小调整的参数,该值越大则磁盘I/O次数越少。但使用该参数值时各个系统的性能提高程度均不相同,因此应设置符合各个系统的值(但 Oracle 9i以后的版本不建议修改该参数,建议用PGA_AGGREGATE_TARGET参数代替)。