SQL調優(SQL TUNING)並行查詢提示(Hints)之pq_distribute的使用

sqysl發表於2017-01-29

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章