ORACLE的HASH JOIN串連

來源:互聯網
上載者:User

最近,查閱了部分關於HASH JOIN的資料,現整理總結如下,以備忘。

HASH JOIN是oracle在7.3版本中引入的一種表串連方式,以補充NESTED LOOP 和sort merge。HASH JOIN具有以下特徵:

1.只可以運行在CBO模式下

2.由於採用了hash函數的計算方式,因此只適用於等值操作

3.對hash_area_size的大小非常敏感,過大或者過小都會影響到執行效率,因此。建議採用ORACLE的自動記憶體管理機制;

4.hash join屬於CPU密集型操作(用於hash運算等),尤其在並行模式下,對cpu的效果更加明顯,因此在cpu資源非常緊張的情況下,我們可以嘗試屏蔽hashjoin,以便提高資料庫的整體效能。

5.作為小表的資料在連結列上最好是分布均勻的

與hash join 相關的參數:

1.HASH_JOIN_ENABLED

在10g的版本中,已成為隱藏函數_hash_join_enabled,(要查看隱藏函數,參考:http://blog.csdn.net/yidian815/article/details/12154567)。我們可以在system和session層級來修改這個參數。

2.HASH_AREA_SIZE

這個參數控制hash join可用的記憶體地區的大小,預設情況下,該參數為SORT_AREA_SIZE的兩倍,ORACLE不建議我們手動修改該參數的值,為了提高hashjoin的效能,最好保證整個小表集合的資料可以完全放入記憶體中,但是在完全放入記憶體後,再繼續增加hash erea意義不大,而且可能使效率下降(例如,消耗在記憶體管理)。

在單個session中,可能同時存在多個hash area,因此一個sql查詢可能同時存在多個hash join。

3.worderea_size_policy

關於該參數的解釋,請看:http://blog.csdn.net/yidian815/article/details/12158537

4.pga_aggregate_target

該參數指定pga的記憶體管理是否使用自動記憶體管理,當採用自動記憶體管理時,單個session的佔用記憶體不可以超過pga_aggregate_target的5%,而如果採用並行模式,則所有並行進程的總和不可以超過30%。為了使用大的記憶體用於hash join,可以將wordarea_size_police設定為手工模式,以便於手工指定各個area的記憶體大小。

5。HAHS_MULTIBLOCK_IO_COUNT

這個參數決定每次讀入hash area的資料區塊數量。因此它會對IO效能產生影響。在8.0及之前版本,它的預設值是1,在8i及以後版本,預設值是0。一般設定為1-(65536/DB_BLOCK_SIZE)。
在9i中,這個參數是一個隱藏參數:_HASH_MULTIBLOCK_IO_COUNT,可以通過表x$ksppi查詢和修改。
另外,在MTS中,這個參數將不起作用(只會使用1)。
它的最大值受到OS的IO頻寬和DB_BLOCK_SIZE的影響。既不能大於MAX_IO_SIZE/DB_BLOCK_SIZE。
在8i及以後版本,如果這個值設定為0,則表示在每次查詢時,Oracle自己自動計算這個值。這個值對IO效能影響非常大,因此,建議不要修改這個參數,使用預設值0,讓Oracle自己去計算這個值。
如果一定要設定這個值,要保證以下不等式能成立:
R/M < Po2(M/C)
其中,R表示小表的大小;M=HASH_AREA_SIZE*0.9;Po2(n)為n的2次方;C=HASH_MULTIBLOCK_IO_COUNT*DB_BLOCK_SIZE。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.