real-world performance學習筆記之 optimizer expose
1.Data skew cbo預設是按照平均的方式來評估card,當資料傾斜的時候,預設的評估 方式存在問題,因此oracle引入了直方圖來解決這個問題 2.bind peeking oracle 9i中引入bind peeking,對於等值查詢,如果查詢欄位存在直方圖的情況下, 當第一次解析的時候,oracle將會做bind peeking,oracle用具體繫結變數的值代入 生成執行計劃,就像沒使用繫結變數一樣,但是以後的執行計劃都是重用第一次的, 因此當data skew的時候,bind peeking就會存在問題,因此bind peeking帶來的壞處 比好處多,11g引入自適應遊標共享來解決這個問題. bind peeking控制引數_optim_peek_user_binds 3.column low/high values 列的最大值和最小值當收集統計資訊的時候設定method_opt=>for columns .. size 1 的時候收集,列的最大值用於評估範圍查詢情況的cost 和cardinality,當查詢的範圍超過 最大值或者最小值的時候容易導致cardinality為1,因此不準確的最大值和最小值容易 導致oracle選擇錯誤的執行計劃. 解決方法: a.及時的收集統計資訊 b.手工調整最大值和最小值 c.使用動態取樣(對於超大表一般沒什麼作用) 4.data correlation oracle在評估多列謂詞的時候,預設是按照謂詞獨立來評估的,比如(a=1 and b=2),在計算選擇 性的時候是按照(selectility(a)*selectility(b)),在11g以前oracle的統計資訊裡只會包含一個欄位 的資訊,無法識別組合列的資訊,因此存在列存在相關性的時候,oracle無法準確的評估cardinality的值,容易導致錯誤的執行計劃,解決方法: a.hint b.動態取樣level設定為4以上 c.11g收集組合列的統計資訊 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8984272/viewspace-619906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AI學習筆記——Tensorflow中的Optimizer(優化器)AI筆記優化
- node學習筆記之39筆記
- 學習筆記之測試筆記
- Swoft 學習筆記之配置筆記
- Boltdb學習筆記之〇--概述筆記
- flask學習筆記之blueprintFlask筆記
- JS學習筆記之this指向JS筆記
- Java學習筆記之staticJava筆記
- oracle之awr學習筆記Oracle筆記
- Web之http學習筆記WebHTTP筆記
- 《筆記》之學習高併發筆記
- Vue(1)之—— Vuex學習筆記Vue筆記
- swoft 學習筆記之 response 篇筆記
- JVM學習筆記之棧區JVM筆記
- hive學習筆記之十一:UDTFHive筆記
- Golang學習筆記之方法(method)Golang筆記
- 學習筆記:DOM之appendChild筆記APP
- Java學習筆記之I/OJava筆記
- C++ 學習筆記之 引用C++筆記
- Android學習筆記之IntentAndroid筆記Intent
- Netty學習筆記之ChannelHandlerNetty筆記
- Java學習筆記之檔案Java筆記
- 安卓學習筆記之Activity(一)安卓筆記
- Java學習筆記之陣列Java筆記陣列
- Java學習筆記之繼承Java筆記繼承
- MD5之學習筆記筆記
- swift 學習筆記之陣列Swift筆記陣列
- CUDA 學習筆記之程式棧筆記
- Python學習筆記之序列Python筆記
- robot framework學習筆記之九-雜記Framework筆記
- numpy的學習筆記\pandas學習筆記筆記
- Vue學習筆記之Webpack的使用Vue筆記Web
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- ReactNative學習筆記十一之FlatListReact筆記
- Swoft 學習筆記之 request 請求筆記
- swoft 學習筆記之驗證器筆記
- Swoft 學習筆記之控制器筆記
- go 學習筆記之工作空間Go筆記