oracle optimizer:遷移到使用基于成本的優化器—–系列2.1
系列之二包含影響優化器選擇執行計劃的初始化參數和oracle內部隱藏參數,合理設置這些參數對于優化器是相當重要的。
6.影響優化器的初始化參數
除了生成統計資料之外,下面提及的參數設置在你的系統正常工作中扮演著極重要的角色.這些設置將大多依賴于你想創建何種類型的環境。聯機,批處理,數據倉庫或多于一個的組合。請注意優化器考慮這些參數以評估每一個在cbo生成的執行計劃.
在下面例子中提及的參數值是這樣的(它已在oracle8.1.7.4中一些聯機事務處理運行結果良好),oracle給你決定想維護何種設置的自由.因此不要僅保持默認值并且確信對于每個需求設置這些參數.
6.1) optimizer_mode
此項決定優化器引擎運行在何種模式下。有效值:rule, choose, all_rows, first_rows (_n).已在第一部分3.2.2解釋cbo選項.
可將optimizer_mode設置為choose.這種中間類型的選項在rbo和cbo之間,
事實上,它試著在統計資料是否可用的情況下運行查詢在cbo或rbo模式下。因此,如果出現在查詢的表已生成統計資料,oracle將優先采用cbo (all_rows only)
例子: optimizer_mode = first_rows
6.2) optimizer_features_enable
此項用來設置諸如8.1.5, 8.1.7, 9.0.0.的版本號。因為在每一個版本中cbo增加了新功能,它會改變并導致不同的執行計劃。可以為你的程序調整設置版本號。請注意設置較低的版本將會防止以后版本新功能的使用。
例子: optimizer_features_enable = 8.1.7
6.3) optimizer_max_permutations
此項參數指定查詢連接的最大排列數量以選擇一個執行計劃,它會影響查詢的解析時間,應該設置一個較低的值。確保本節提及的另一個參數的正常設置以致于優化器在指定的上限內查找到一個最佳的執行計劃。oracle8中默認值為80000,意味著沒有限制。oracle9中默認值為2000.
例子: optimizer_max_permutations = 2000
另一參數optimizer_search_limit覆蓋了本參數的效果,它指定一個查詢中最大的表數量,可以考慮排序笛卡爾連接。在oracle8.1.6中已廢棄.