【DBA】Oracle 11g 針對SQL效能的新特性(二)- Cardinality Feedback
By:
Guest Author
Cardinality Feedback (CFB)
名詞
Cardinality:
最佳化器在計算成本的時候,需要從統計資訊中取得資料,然後去估計每一步操作所涉及的行數,叫做Cardinality。
比如,一張表T有1000行資料,列COL1上沒有直方圖,沒有空值,並且不重複的值(distinct value)有500個。那麼,在使用條件“WHERE COL1=”去訪問表的時候,最佳化器會假設資料均勻分佈,它估計出會有1000/500=2行被選出來,2就是這步操作的Cardinality。
最佳化器在計算成本的時候,需要從統計資訊中取得資料,然後去估計每一步操作所涉及的行數,叫做Cardinality。
比如,一張表T有1000行資料,列COL1上沒有直方圖,沒有空值,並且不重複的值(distinct value)有500個。那麼,在使用條件“WHERE COL1=”去訪問表的時候,最佳化器會假設資料均勻分佈,它估計出會有1000/500=2行被選出來,2就是這步操作的Cardinality。
通常情況下,Cardinality越準確,生成的執行計劃就會越高效。
適用情況
Oracle只針對下面情況開啟CFB:
o 沒有收集表的統計資訊,並且dynamic sampling 也沒有開啟。
或者
o 查詢條件複雜(比如條件有函式)或者涉及多列,但卻沒有收集擴充套件的統計資訊(extended statistics)
或者
o 查詢條件複雜(比如條件有函式)或者涉及多列,但卻沒有收集擴充套件的統計資訊(extended statistics)
在這幾種情況下,CBO是無法估算出準確的Cardinality的。
過程描述
1. 針對上述情況,Oracle會監控操作的實際行數(A-Row),然後對比CBO估算的行數(E-Row)。
2. 如果兩個值相差很大,就記錄實際行數(A-Row),做上標記。下次執行時再次進行硬解析,根據實際行數來重新生成執行計劃。
3. 如果兩個值相差不大,CBO就不再監控這條SQL語句。
2. 如果兩個值相差很大,就記錄實際行數(A-Row),做上標記。下次執行時再次進行硬解析,根據實際行數來重新生成執行計劃。
3. 如果兩個值相差不大,CBO就不再監控這條SQL語句。
驗證
如果你在執行計劃的最後看到下面這段文字,說明這個執行在生成時啟用了CFB。
Note
-----
- cardinality feedback used for this statement
-----
- cardinality feedback used for this statement
禁用
如果你被這個特性困擾,那麼可以把它關閉。 具體操作請參考Note 1344937.1
參考
Cardinality Feedback - Frequently Asked Questions (Doc ID 1344937.1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2141457/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g SQL效能的新特性(二)- Cardinality FeedbackOracleSQL
- 【DBA】Oracle 11g 針對SQL效能的新特性(三)- SQL Plan ManagementOracleSQL
- 【DBA】Oracle 11g 針對SQL效能的新特性(一)- Adaptive Cursor SharingOracleSQLAPT
- 關於oracle11g的關於cardinality feedback新特性Oracle
- Oracle Database Cardinality FeedbackOracleDatabase
- Oracle 11g SQL效能的新特性(三)- SQL Plan ManagementOracleSQL
- Oracle 11gr2 新技術 Cardinality FeedbackOracle
- oracle 11g新特性Cardinality Feedback基數反饋造成同一sql幾乎同時執行產生不同的執行計劃OracleSQL
- Oracle 11g SQL效能的新特性(一)- Adaptive Cursor SharingOracleSQLAPT
- Oracle 11g 中SQL效能最佳化新特性之SQL效能分析器(SQLPA)OracleSQL
- Oracle 11g 新特性 -- SQL Plan Management 示例OracleSQL
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- oracle 11g 的新特性Oracle
- 基數反饋(Cardinality Feedback)
- 那些語句使用cardinality feedback
- Cardinality Feedback基數反饋
- 【ORACLE新特性】11G 分割槽新特性Oracle
- [20150706]11G cardinality feedback問題
- Oracle 11g 新特性Oracle
- 針對oracle效能的io調優Oracle
- SQL Query Result Cache的使用和配置--Oracle 11G新特性SQLOracle
- [20150430]11G SPM與cardinality feedback2
- Oracle11新特性——PLSQL新特性(二)OracleSQL
- sql server針對表增加新的分割槽SQLServer
- Oracle 11g 新特性簡介Oracle
- Oracle 11g 新特性之DRCPOracle
- Oracle 11g新特性:Result CacheOracle
- Oracle 11g 新特性(轉載)Oracle
- Oracle 11g新特性之SecureFilesOracle
- Oracle 資料庫11g新特性之高效 PL/SQL 編碼Oracle資料庫SQL
- oracle DG 11g新特性彙總Oracle
- ORACLE 11G新特性之列新增操作Oracle
- Oracle 11g 新特性 -- SecureFiles 說明Oracle
- oracle 11g 新特性 表壓縮Oracle
- Oracle 11g的新特性分割槽:System PartitionOracle
- Oracle SQL Developer 4.1 和 SQLcl 的新特性OracleSQLDeveloper
- Oracle 12c 新特性(二)Oracle
- 【DBA】Oracle Database 11g: 面向 DBA 和開發人員的重要特性 資料庫重放OracleDatabase資料庫