【CBO】基於成本優化器的基本原則(一)

yellowlee發表於2010-11-25

基於成本的一些規則或者計演算法則,對於理解cost計算和優化器最終的執行計劃選擇有很大幫助。參考《cost based fundamental》,僅僅列出一些涉及到的內容或者title,可以看出作者在優化器的內部原理和實際體現方面都非常有心得。內容的編排看似有些散亂,不過優化的複雜性決定了此型別的講解必然是一個即有深度有要廣泛的模式。可以對各個不同情況進行測試,真實環境中雖然是各種情況的一個彙集,不過只要理解了原理,也就沒有什麼實質性障礙了。

一,表掃描
1,計算單表掃描的cost
 a,不同的db_file_multiblock_count對計算cost的影響
 b,表的統計資訊中的numblks塊數的改變對計算cost的影響
 c,不同的block_size對cost的影響
 d,高水位

2,使用cpu開銷模式
 a,收集和設定系統統計資訊
 b,有系統統計資訊的情況下,cost的計算公式
 c,cpu開銷模式的開關和cpu開銷下謂詞順序對cost的影響
 
3,並行執行
 a,使用並行執行的hint
 b,不同並行度在不同版本下面單表掃描的cost表現
 c,並行掃描和直接路徑讀

4,索引快速全掃描
 a,索引塊全掃描的cost計算模型與全表掃描類似
 b,改變索引的leaf_blocks數量對計算cost的影響
 c,使用hint利用index_ffs
 
5,分割槽
 a,分割槽內掃描與跨分割槽掃描
 b,執行計劃分析
 c,過度使用繫結變數


二,單表選擇性
1,列統計資訊density與num_distinct

2,base選擇性係數,base集勢係數計算

3,in-list
 a,in會轉化為or,如果使用use_conact,則會轉化為union all
 b,in list在不同版本中的cardinality變化

4,範圍謂詞
 a,謂詞對cost計算的影響,上下界,包含或不包含的各種情況測試
 b,錯誤或者改變的cardinality,能夠對join order和索引的選擇產生很大影響。
 c,繫結變數和範圍
 d,範圍謂詞的選擇性計算
 e,繫結變數peeking
 

三,簡單b樹訪問
1,典型的b樹訪問步驟

2,索引訪問的代價計算方法

3,索引高度,葉塊數

4,索引的pctfree

5,索引選擇性

6,索引因子

7,擴充套件
 a,range
 b,組合索引
 c,in-list
 d,索引全掃描
 e,只訪問索引
 
8,cpu costing


四,clustering factor

1,索引因子對cost計算的一般測試

2,減少表競爭(使用多個freelist)
 a,rowid結構
 b,storage引數(freelists)
 c,freelists管理
 
3,減少leafblock競爭(使用反向鍵索引)

4,減少表競爭(使用ASSM)

5,減少rac中的競爭(使用freelist groups)
 a,buffer busy waits
 b,重新平衡freelist groups
 
6,索引的欄位順序
 a,不同順序的cluster factor不同
 b,增加欄位對cf的影響
 
7,獲得正確的統計資訊
 a,dbms_stats.get_index_stats和set_index_stats
 
 
五,選擇性問題

1,不同資料型別的選擇性
 a,date
 b,character
 c,date,number,character三者的選擇性比較
 d,直方圖可以幫助糾正一些由於資料型別導致的選擇性計算不準確的問題
 e,對於範圍謂詞,使用between and 和 不等號對card值的影響
 f,sysdate問題
  between sysdate and sysdate + n
  between trunc(sysdate) and trunc(sysdate) + n
  between sysdate - n and sysdate
  between trunc(sysdate) -n and sysdate
  between sysdate - n and sysdate +n
  between trunc(sysdate) - n and trunc(sysdate) + n
  以及上下限分別使用或者不使用繫結變數給card值計算帶來的影響
 g,函式選擇性
 h,關聯的列
 i,動態取樣,不同版本,不同取樣級別對card計算的影響


六,直方圖
 a,高度直方圖
 b,頻度直方圖
 c,直方圖與繫結變數
 d,繫結變數窺探
 e,oracle何時忽略直方圖
 f,直方圖與分散式查詢
 g,篡改頻度直方圖
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-680288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章