oracle動態取樣_optimizer_dynamic_sampling(二)
oracle 動態取樣
1,動態取樣就是為了提升資料庫的效能,透過對錶和其索引的謂詞選擇度和統計收集更加精確的資訊.
2,上述的表及索引的統計包括:表的資料塊數,索引資料塊數,表的基數,關聯列的統計.
3,上述這些資訊越準越會產生更好的執行計劃
oracle動態取樣可以作什麼?
1,當被收集的統計不能用或可錯大的錯誤,就用它評估單表的謂詞選擇度,
2,如表及索引無統計,評估表的統計
3,一些及索引的統計過期不用使用,就用動態取樣
oracle動態取樣如何工作呢?
1,最主要的效能問題在編譯期間.oracle在編譯期間決定動態取樣是否有益有於查詢.
如有益查詢,則會發出一個遞迴sql掃描表的隨機資料塊個數,然後透過單表的謂詞
評估謂詞的選譯度.
2,在一些情況下,取樣的基數用於評估表的基數.而且相關的表和列的統計也會收集
何時使用動態取樣呢?
1,透過動態取樣可以得到更好的執行計劃
2,整個取樣的時間僅佔查詢執行總時間的很小一部分
3,查詢會多次執行
4,如下引數optimizer_features_enable如配置為9.2.0則禁用動態取樣,測試如下
SQL> show parameter optimizer_features_enable
1,動態取樣就是為了提升資料庫的效能,透過對錶和其索引的謂詞選擇度和統計收集更加精確的資訊.
2,上述的表及索引的統計包括:表的資料塊數,索引資料塊數,表的基數,關聯列的統計.
3,上述這些資訊越準越會產生更好的執行計劃
oracle動態取樣可以作什麼?
1,當被收集的統計不能用或可錯大的錯誤,就用它評估單表的謂詞選擇度,
2,如表及索引無統計,評估表的統計
3,一些及索引的統計過期不用使用,就用動態取樣
oracle動態取樣如何工作呢?
1,最主要的效能問題在編譯期間.oracle在編譯期間決定動態取樣是否有益有於查詢.
如有益查詢,則會發出一個遞迴sql掃描表的隨機資料塊個數,然後透過單表的謂詞
評估謂詞的選譯度.
2,在一些情況下,取樣的基數用於評估表的基數.而且相關的表和列的統計也會收集
何時使用動態取樣呢?
1,透過動態取樣可以得到更好的執行計劃
2,整個取樣的時間僅佔查詢執行總時間的很小一部分
3,查詢會多次執行
4,如下引數optimizer_features_enable如配置為9.2.0則禁用動態取樣,測試如下
SQL> show parameter optimizer_features_enable
NAME TYPE VALUE
------------------------------------ ----------- -------------------------
optimizer_features_enable string 11.2.0.1
SQL> explain plan for select a from t_sample;
------------------------------------ ----------- -------------------------
optimizer_features_enable string 11.2.0.1
SQL> explain plan for select a from t_sample;
已解釋。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Plan hash value: 2027750767
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2435K| 30M| 548 (3)| 00:00:
| 1 | TABLE ACCESS FULL| T_SAMPLE | 2435K| 30M| 548 (3)| 00:00:
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2435K| 30M| 548 (3)| 00:00:
| 1 | TABLE ACCESS FULL| T_SAMPLE | 2435K| 30M| 548 (3)| 00:00:
--------------------------------------------------------------------------
Note
-----
-----
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
- dynamic sampling used for this statement (level=2)
已選擇12行。
SQL> show parameter optimizer_features_enable
NAME TYPE VALUE
------------------------------------ ----------- -------------------------
optimizer_features_enable string 11.2.0.1
SQL> alter session set optimizer_features_enable='9.2.0';
------------------------------------ ----------- -------------------------
optimizer_features_enable string 11.2.0.1
SQL> alter session set optimizer_features_enable='9.2.0';
會話已更改。
SQL> explain plan for select a from t_sample;
已解釋。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Plan hash value: 2027750767
--------------------------------------
| Id | Operation | Name |
--------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | TABLE ACCESS FULL| T_SAMPLE |
--------------------------------------
| Id | Operation | Name |
--------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | TABLE ACCESS FULL| T_SAMPLE |
--------------------------------------
Note
-----
-----
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
- rule based optimizer used (consider using cbo)
已選擇12行。
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-751535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle動態取樣_optimizer_dynamic_samplingOracle
- Oracle 動態取樣Oracle
- Oracle動態取樣分析Oracle
- Oracle 分析及動態取樣Oracle
- Oracle動態取樣學習Oracle
- Oracle 分析及動態取樣(轉帖)Oracle
- Oracle 執行計劃 分析和動態取樣Oracle
- 【原創】ORACLE 資料分析和動態取樣Oracle
- 【sql調優】動態取樣SQL
- sql profile禁用oracle動態取樣dynamic samplingSQLOracle
- 9i,10g 優化器動態取樣級別引數 -- optimizer_dynamic_sampling (統計優化)優化
- CBO與動態統計量取樣
- 如何找出使用動態取樣的SQLSQL
- oracle動態取樣dynamic sampling hint為何不生效一點思考Oracle
- 對於沒有任何統計資訊的表,ORACLE可能會動態取樣。Oracle
- 如何檢視哪些SQL使用了動態取樣?SQL
- 示例說明動態取樣的作用,並演示動態取樣對有內在關係的多列查詢的影響
- oracle隨機取樣Oracle隨機
- 臨時表(GLOBAL TEMPORARY TABLE)及統計資訊收集,動態取樣
- lit動態修改樣式
- 避免動態SQL(二)SQL
- 【AWR】測試AWR手動取樣對系統自動取樣的影響
- dbms_stats.lock_table_stats與動態取樣(Dynamic Sampling)
- Oracle 動態SQLOracleSQL
- [Oracle] Oracle收集統計資訊的取樣比例Oracle
- php動態獲取常量PHP
- 動態變更vue樣式Vue
- javascript 動態修改css樣式JavaScriptCSS
- Python 爬取網頁中JavaScript動態新增的內容(二)Python網頁JavaScript
- oracle 監聽 靜態 動態Oracle
- Oracle動態遊標Oracle
- ferret 爬取動態網頁網頁
- 動態網站的爬取網站
- 圖片二次取樣簡單示例
- Vue 動態繫結CSS樣式VueCSS
- JavaScript動態更改引入樣式表JavaScript
- 微課sql最佳化(6)、統計資訊收集(4)-關於動態取樣SQL
- 逆機率取樣-接受拒絕取樣-MCMC取樣