新聞中心
以下的文章主要描述的是DB2 優(yōu)化器中針對 JOIN 語句的實際操作結(jié)果集估計,在實際操作中DB2 優(yōu)化器在為 SQL 語句生成執(zhí)行計劃時,其實際操作過程中都會對每個步驟產(chǎn)生的結(jié)果集大小進(jìn)行估計,這就是優(yōu)化器的基估計。

公司主營業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出萬柏林免費做網(wǎng)站回饋大家。
在所有 SQL 語句基估計過程中,以 JOIN 語句的計算過程最復(fù)雜,而 JOIN 語句恰恰是進(jìn)行性能優(yōu)化的重點。本文主要關(guān)注 DB2 優(yōu)化器在進(jìn)行基估計時采用的計算方法、輸入等。
簡介
優(yōu)化器是 DB2 的心臟和靈魂(可以把它類比成寶馬 730 或波音 747 的發(fā)動機(jī)引擎一樣)。它分析 SQL 語句并確定可以滿足每條語句的最有效的存取路徑。 DB2 SQL 優(yōu)化器可以估計每個備選訪問計劃的執(zhí)行成本,并根據(jù)其估計結(jié)果選擇一個最佳訪問計劃。
在優(yōu)化器在優(yōu)化一個 SQL 語句的過程中使用到兩個非常重要的概念:selectivity 和 cardinality 。 selectivity 是指一個 SQL 操作的得出結(jié)果集占原來結(jié)果集的百分比,而 cardinality 就是指一個 SQL 操作的得出結(jié)果集的行數(shù)。
為正確地確定每種訪問計劃的成本,DB2 優(yōu)化器都會對每個步驟產(chǎn)生的結(jié)果集大小即返回的行數(shù)進(jìn)行估計,這就是優(yōu)化器的基估計。 DB2 優(yōu)化器需要準(zhǔn)確的基數(shù)估計值?;鶖?shù)估計是這樣一種過程:在應(yīng)用了謂詞或執(zhí)行了聚集之后,優(yōu)化器使用統(tǒng)計信息確定部分查詢結(jié)果的大小。對于訪問計劃的每個操作符,優(yōu)化器將估計該操作符的基數(shù)輸出。一個或更多謂詞的應(yīng)用可以減少輸出流基數(shù)。
JOIN 謂詞
當(dāng)我們在 SQL 里面需要對多個表進(jìn)行 join 的時候,DB2 會首先選擇其中的 2 個表進(jìn)行 join,并獲取到一個中間的結(jié)果集,然后 DB2 可能會用這個中間的結(jié)果集和第三個表做 join,再次獲得中間的結(jié)果集(當(dāng)然也可能是把另外 2 個表做 join,然后把兩個中間的結(jié)果集進(jìn)行 join 操作),不管是怎么操作,DB2 一次能夠 join 的表的個數(shù)肯定是兩個。因此當(dāng)優(yōu)化器在考慮 Join 如何處理的時候,join 的順序就是一個很重要的問題,因為我們總是希望能夠在最開始就把結(jié)果集控制的盡量小。
以上的相關(guān)內(nèi)容就是對DB2 優(yōu)化器中針對 JOIN 語句的結(jié)果集估計的介紹,望你能有所收獲。
【編輯推薦】
- DB2 數(shù)據(jù)類型如何才能輕松接觸?
- DB2v9.5控制中心建庫報錯如何挽救?
- IBM DB2數(shù)據(jù)庫錯誤信息的大集合,不得不看!
- 降低DB2管理表空間的高水位標(biāo)記實操
- 3個建議實現(xiàn)DB2數(shù)據(jù)庫設(shè)計,很簡單!
當(dāng)前文章:DB2 優(yōu)化器中針對JOIN 結(jié)果集估計經(jīng)典版!
URL標(biāo)題:http://m.fisionsoft.com.cn/article/dphhjcc.html


咨詢
建站咨詢
