oracle笔记整理14——性能调优之oracle执行计划

1) 优化器(optimizer)

a) RBO(rule-based optimizer)方式:基于规划的优化方式
所遵循的是oracle内部预定的一些规则.

b) CBO(cost-based optimizer)方式:看语句的执行代价(cost),这里的代价主要指cpu和内存。
优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。

2) 优化模式

a) rule:基于规则的方式

b) choose:默认使用方式,有统计信息,采用CBO,无统计信息,采用RBO.

c) first rows:有统计信息,以最快的时间返回最先几行,通常为NL连接方式。

d) all rows:即cost方式,有统计信息,以最快的方式返回表的所有行,无统计信息,才用RBO;

e) 更新统计信息

表:  analyze table table_name compute statistics
索引:analyze index index_name estimate statistics

f) 有时候明明有索引但是执行计划没有走索引,原因有二,第一:表或索引的统计信息缺失或过时;第二:表太小,oracle认为不值得走索引。

3) 执行计划管理

优化器会维护所有执行次数超过一次的sql语句的每个执行计划的历史列表(plan history),优化器通过维护一个语句执行的日志条目(statement log)来识别该sql是否为第二次执行。如果为第二次执行,则优化器将语句生成的所有执行计划都插入到plan history表中,只有当新的执行计划的成本比plan baseline 执行计划基准线中的成本低时才使用。

4) sql plus中开启执行计划

a) SET AUTOTRACE ON          
–包含执行计划、统计信息、以及脚本结果数据输出

b) SET AUTOTRACE ON EXPLAIN       
–包含执行计划、脚本结果数据输出,没有统计信息

c) SET AUTOTRACE TRACEONLY      
–有执行计划、统计信息,不会有脚本结果数据输出

d) SET AUTOTRACE OFF          
–不生成AUTOTRACE报告,这是缺省模式

e) 注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。在PL/SQL中可以按F5来查看。

5) 示例

a)  set autotrace traceonly

oracle笔记整理14——性能调优之oracle执行计划_第1张图片

b) 统计信息:
oracle笔记整理14——性能调优之oracle执行计划_第2张图片

c) 动态分析

Note
------------
-dynamic sampling used for the statement

这提示用户CBO当前使用的技术, 当出现这个提示,说明当前表使用了动态采样。说明这个表可能没有分析统计信息。

你可能感兴趣的:(oracle)