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、做好充足的统计信息收集,避免动态采样。
编辑推荐:
- 微课sql优化(6)、统计信息收集(4)-关于动态采样03-03
- 微课sql优化(9)、如何获取执行计划03-03
- 微课sql优化(8)、统计信息收集(6)-统计信息查询03-03
- DB2 v101安装和卸载(Windows)03-03
- 微课sql优化(10)、关于数据访问方法03-03
- 微课sql优化(15)、表的连接方法(4)-关于Hash Join(哈希连接)03-03
- DB2备份与恢复03-03
- [20200303]降序索引疑问5.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 微课sql优化(6)、统计信息收集(4)-关于动态采样
微课sql优化(6)、统计信息收集(4)-关于动态采样
26-03-03 - DB2 v101安装和卸载(Windows)
DB2 v101安装和卸载(Windows)
26-03-03 - 微课sql优化(10)、关于数据访问方法
微课sql优化(10)、关于数据访问方法
26-03-03 - 微课sql优化(15)、表的连接方法(4)-关于Hash Join(哈希连接)
- DB2备份与恢复
DB2备份与恢复
26-03-03 - 微课sql优化(13)、表的连接方法(2)-基础概念
微课sql优化(13)、表的连接方法(2)-基础概念
26-03-03 - 微课sql优化(14)、表的连接方法(3)-关于Nested Loops Join(嵌套循环)
- Oracle面试宝典-锁篇
Oracle面试宝典-锁篇
26-03-03 - 微课sql优化(16)、表的连接方法(5)-关于Merge Join(排序合连接)
- 微课sql优化(17)、不改代码,优化SQL(1)-优化方法总结
微课sql优化(17)、不改代码,优化SQL(1)-优化方法总结
26-03-03
