學習筆記-《基於Oracle的SQL優化》-第一章-1
開始學習崔老師的《基於Oracle的SQL優化》,七百多頁,雖然可能會比較痛苦,但想必是一個痛並快樂的過程,盡情享受了。。。
第一章:Oracle裡的優化器
優化器是Oracle資料庫中內建的一個核心子系統,可以理解為一個核心模組或者一個核心功能元件。優化器的目的是按照一定的判斷原則來得到它認為的目標SQL在當前情形下最搞笑的執行路徑,也就是說,優化器的目的是為了得到目標SQL的執行計劃。
RBO內建的等級1所對應的的執行路徑就是"single row by rowid(通過rowid來訪問單行資料)"。等級15所對應的的執行路徑則是"full table scan(全表掃描)"。
等價改寫目標SQL,以讓RBO生效。
目標where條件中對NUMBER或DATE型別的列加上0(如果是VARCHAR2或CHAR型別,可以加上一個空字元,例如||''),這樣原先可以用索引的就不能用了。對於多表連線的,這種改變可以影響表連線的順序,進而使用RBO情況下對目標SQL執行計劃作調整。
若兩條或兩條以上的等級值相同的執行路徑。RBO會依據目標SQL中所涉及的相關物件在資料字典快取中的快取順序和目標SQL中所涉及的各個物件在目標SQL文字中出現的先後順序來綜合的判斷。這就意味著可以通過調整相關物件在資料字典快取中的快取中的順序,改變目標SQL中所涉及的各個物件在該SQL文字中出現的先後順序來調整其執行計劃。
RBO的缺點:
靠硬編碼在Oracle資料庫程式碼庫中的一些列固定的規則來決定目標SQL的執行計劃,並未考慮SQL中所涉及的物件的實際資料量、實際資料分佈等情況,一旦固定的規則不適用於該SQL中所涉及的實際物件時,RBO根據固定規則產生的執行計劃就很可能不是當前情況下的最優執行計劃了。
CBO:
Oracle自動計算執行路徑的成本,直到目標SQL的各個可能的執行路徑全部計算完畢或已達到預先定義好的待計算的執行路徑數量的閾值。
集的勢:
Cardinality,指指定集合所包含的記錄數。即指定結果集的行數。表示對目標SQL的某個具體執行步驟的執行結果所包含的記錄數的估算。當然,如果是針對整個目標SQL,那麼此時的Cardinality就表示對該SQL最終執行結果所包含的記錄數的估算。某個執行步驟的對應Cardinality值越大,那麼所對應的成本值往往也就越大,這個執行步驟所在執行路徑的總成本值也就會越大。
可選擇率:
Selectivity,指施加指定謂詞條件後返回結果集的記錄數佔未施加任何謂詞條件的原始結果集的記錄數的比率。
可選擇率的值越大,就意味著返回結果集的Cardinality的值就越大,所以估算出來的成本值也就會越大。
存在的問題:
在做實驗的過程中碰到一個看似比較小的問題,select * from emp where mgr=7902;,在mgr建立了索引,但未利用索引,而是使用的全表掃描,奇怪的事情,準備列印10046的trace探探究竟,後面有結果會詳細說明,也順便學習下10046的使用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-777408/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讀書筆記-《基於Oracle的SQL優化》-第一章-3筆記OracleSQL優化
- 讀書筆記-《基於Oracle的SQL優化》-第一章-2筆記OracleSQL優化
- oracle 學習筆記---效能優化學習(1)Oracle筆記優化
- oracle 學習筆記---效能優化(1)Oracle筆記優化
- 讀書筆記-《基於Oracle的SQL優化》-第二章-1筆記OracleSQL優化
- Oracle Sql優化筆記OracleSQL優化筆記
- ORACLE學習筆記--效能優化FAQ。Oracle筆記優化
- oracle 學習筆記---效能優化(2)Oracle筆記優化
- oracle 學習筆記---效能優化(3)Oracle筆記優化
- oracle 學習筆記---效能優化(4)Oracle筆記優化
- oracle 學習筆記---效能優化(5)Oracle筆記優化
- oracle 學習筆記---效能優化(6)Oracle筆記優化
- oracle 學習筆記---效能優化(7)Oracle筆記優化
- MySql 學習筆記三:常用SQL優化MySql筆記優化
- 強化學習-學習筆記1 | 基礎概念強化學習筆記
- MySql 學習筆記一:SQL語句優化MySql筆記優化
- PL/SQL學習筆記-1SQL筆記
- Oracle學習筆記1Oracle筆記
- Oracle學習筆記-1Oracle筆記
- iOS學習筆記-TableView效能優化篇1iOS筆記View優化
- 基於Oracle的sql最佳化(1)OracleSQL
- 斜率優化學習筆記優化筆記
- mysql優化學習筆記MySql優化筆記
- oracle statpack優化學習(1)Oracle優化
- Oracle效能優化視訊學習筆記-效能優化概念(一)Oracle優化筆記
- Oracle效能優化視訊學習筆記-效能優化概念(二)Oracle優化筆記
- Java基礎學習筆記 第一章Java筆記
- Oracle基礎學習筆記Oracle筆記
- SQL優化筆記SQL優化筆記
- Mysql 優化(學習筆記二十)MySql優化筆記
- oracle筆記整理13——效能調優之SQL優化Oracle筆記SQL優化
- 強烈推薦:ORACLE學習筆記--效能優化(ZT)Oracle筆記優化
- MySQL優化學習筆記之索引MySql優化筆記索引
- MySQL優化學習筆記之explainMySql優化筆記AI
- Android卡頓優化學習筆記Android優化筆記
- HTTPS 效能優化學習筆記HTTP優化筆記
- Oracle效能優化視訊學習筆記-診斷和調優工具Oracle優化筆記
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記