微課sql最佳化(6)、統計資訊收集(4)-關於動態取樣
1、關於動態取樣
動態取樣會增加缺少或不足的最佳化器統計資訊。使用動態取樣,最佳化器可以透過對謂詞選擇性做出更好的估計來改進計劃。動態取樣可以補充諸如表塊計數,適用的索引塊計數,表基數(估計行數)和相關連線列統計資訊。
特點總結:
1、適用場景:統計資訊缺失或不足時使用
2、優點: 動態取樣可以幫忙最佳化器做出更好的執行計劃選擇
3、缺點: 佔用系統資源。--非常佔用資源
4、做好充足的統計資訊收集,避免動態取樣。
預設情況下,在資料庫中啟用動態取樣。您可以透過設定初始化引數來禁用該功能OPTIMIZER_DYNAMIC_SAMPLING=0。
動態取樣級別控制如何觸發及取樣率。你可以使用OPTIMIZER_DYNAMIC_SAMPLING初始化引數設定動態抽樣率或SQL語句hint。
2、動態取樣級別
3、練習4,最佳化以下語句,消除動態取樣
create table ht.c_cons_ds as select * from ht.c_cons;
查詢語句: select count(1) from ht.c_cons_ds;
set autot traceonly
select count(1) from ht.c_cons_ds;
查詢執行計劃
SQL> set autot traceonly
SQL> select count(1) from ht.c_cons_ds;
Execution Plan
----------------------------------------------------------
Plan hash value: 3975303649
------------------------------------------------------------------------
| Id | Operation
| Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | 18
(0)| 00:00:01 |
| 1 | SORT AGGREGATE |
| 1 |
|
|
| 2 | TABLE ACCESS FULL| C_CONS_DS | 10000 | 18
(0)| 00:00:01 |
------------------------------------------------------------------------
Note
-----
-
dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
58 consistent gets
0 physical reads
0 redo size
526 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
收集統計資訊
exec DBMS_STATS.GATHER_TABLE_STATS(ownname => 'HT',tabname => 'C_CONS_DS',estimate_percent => 100,method_opt => 'for all columns size repeat',no_invalidate => FALSE,degree => 4,cascade => TRUE);
再交查詢執行計劃
Execution Plan
----------------------------------------------------------
Plan hash value: 3975303649
------------------------------------------------------------------------
| Id | Operation
| Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | 18
(0)| 00:00:01 |
| 1 | SORT AGGREGATE |
| 1 |
|
|
| 2 | TABLE ACCESS FULL| C_CONS_DS | 10000 | 18
(0)| 00:00:01 |
------------------------------------------------------------------------
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
57 consistent gets
0 physical reads
0 redo size
526 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
4、小結
1、適用場景:統計資訊缺失或不足時使用
2、優點: 動態取樣可以幫忙最佳化器做出更好的執行計劃選擇
3、缺點: 佔用系統資源。--非常佔用資源
4、做好充足的統計資訊收集,避免動態取樣。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2678255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微課sql最佳化(5)、統計資訊收集(3)-關於預設取樣率SQL
- 微課sql最佳化(8)、統計資訊收集(6)-統計資訊查詢SQL
- 微課sql最佳化(7)、統計資訊收集(5)-關於直方圖SQL直方圖
- 微課sql最佳化(3)、統計資訊收集(2)-如何收集統計資訊SQL
- 微課sql最佳化(2)-為什麼需要收集統計資訊SQL
- 微課sql最佳化(10)、關於資料訪問方法SQL
- 手動收集——收集統計資訊
- 6 收集資料庫統計資訊資料庫
- 微課sql最佳化(9)、如何獲取執行計劃SQL
- 【YashanDB知識庫】收集分割槽表統計資訊取樣率小於1導致SQL執行計劃走偏SQL
- 微課sql最佳化(15)、表的連線方法(4)-關於Hash Join(雜湊連線)SQL
- 微課sql最佳化(4)、幫助“表姐”最佳化報表SQL
- 收集統計資訊方案
- Oracle收集統計資訊Oracle
- 【SCRIPT】Oracle統計資訊相關SQLOracleSQL
- [統計資訊系列7] Oracle 11g的自動統計資訊收集Oracle
- 啟用與禁用統計資訊自動收集
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- 【TUNE_ORACLE】定製化收集統計資訊SQL參考OracleSQL
- 收集全庫統計資訊
- 微課sql最佳化(11) 、如何檢視執行計劃SQL
- 關於之前釋出的“”“慕課全套資料”獲取資訊
- [20221012]修改統計資訊最佳化sql語句.txtSQL
- 微課sql最佳化(16)、表的連線方法(5)-關於Merge Join(排序合連線)SQL排序
- 微課sql最佳化(14)、表的連線方法(3)-關於Nested Loops Join(巢狀迴圈)SQLOOP巢狀
- sql統計-關於學生成績SQL
- oracle 統計資訊檢視與收集Oracle
- 微課sql最佳化(17)、不改程式碼,最佳化SQL(1)-最佳化方法總結SQL
- 微課sql最佳化(1)、基礎概念介紹SQL
- Sqlserver關於統計資訊自動建立自動更新的知識點SQLServer
- 【統計資訊】全面檢視錶所有統計資訊SQLSQL
- SQL Server 更新統計資訊SQLServer
- 微課|中學生可以這樣學Python(例11.3):tkinter通訊錄管理系統4Python
- Oracle統計資訊的收集和維護Oracle
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- 最佳實踐:解讀GaussDB(DWS) 統計資訊自動收集方案
- 系統日誌及資料庫相關資訊收集資料庫
- 關於 Lumen 如何通過動態版本號配置路由資訊。路由