Oracle 优化参数 optimizer_mode 介绍
Oracle 在执行SQL语句时,有两种优化方法:即基于规则的RBO和基于代价的CBO。 在SQL执教的时候,到底采用何种优化方法,就由Oracle参数 optimizer_mode 来决定。
SQL> show parameter optimizer_mode
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_mode string CHOOSE
optimizer_mode 参数值共有以下四个:
第一:CHOOSE
这个是Oracle的默认值。采用这个值时,Oracle即可以采用基于规则RBO,也可以采用基于代价的CBO,到底使用那个值,取决于当前SQL的被访问的表中是不是有可以使用的统计信息。
如果有多个被访问的表,其中有一个或多个有统计信息,那么Oralce会对没有统计信息的表进行采样统计(即不全部采样),统计完成后,使用基于代价的优化方法CBO。
如果所有被访问的表都没有统计信息,Oracle就会采用基于规则的优化方法RBO。
第二:ALL_ROWS
不管是不是有统计信息,全部采用基于成本的优化方法CBO。返回所有行的最小代价。
第三:FIRST_ROWS_n
不管是不是有统计信息,全部采用基于成本的优化方法CBO,并以最快的速度,返回前N行记录。返回前N行的最小代价。
第四:FIRST_ROWS
使用成本和试探法相结合的方法,查找一种可以最快返回前面少数行的方法;这个参数主要用于向后兼容。返回前面的少量行的最好计划
第五:RULE
这个参数正好和ALL_ROWS相反,不管是不是统计信息,全部采用基于规则的优化方法。
如何更改 optimizer_mode 的参数呢?可以用以下的方法。
SQL> alter session set optimizer_mode='RULE';
会话已更改。
|
本文为转载地址http://hi.baidu.com/1shome/blog/item/08f7f04579032627cffca384.html
分享到:
相关推荐
2. 全局化参数:如optimizer_mode、cursor_sharing等,根据应用特点调整以优化查询行为。 3.后台进程调整:如DBWn(数据写入进程)、ARCn(归档日志进程)、LCKn(锁定进程)等,根据系统负载调整数量和优先级。 ...
- **Instance级别**:通过修改`initSID.ora`文件中的`OPTIMIZER_MODE`参数来设置全局的优化模式。 - **Session级别**:使用`ALTER SESSION SET OPTIMIZER_MODE`命令临时更改当前会话的优化模式。 - **Statement级别*...
设定优化器模式可以通过ALTER SESSION语句完成,例如,设置为CBO模式:`ALTER SESSION SET OPTIMIZER_MODE=COST_BASED;` 二、Oracle 索引介绍 索引是提升查询效率的关键工具,分为多种类型,如B树索引、位图索引、...
7. **查询优化器**:理解CBO(Cost-Based Optimizer)的工作原理,学习如何使用optimizer_mode和hints来影响优化器的选择。 8. **物化视图和重写**:对于经常执行的复杂查询,创建物化视图可以预先计算结果,提高...
优化器目标不仅可以通过初始化参数OPTIMIZER_MODE在实例级别进行设置,还可以通过执行ALTER SESSION SET OPTIMIZER_MODE语句在会话级别进行调整。此外,通过在SQL语句中使用Hints,可以针对特定查询动态地改变优化...
- 适当调整初始化参数:如初始化文件init.ora中的optimizer_mode和共享池大小,以适应工作负载需求。 理解并应用这些原则可以帮助你编写出更高效的SQL语句,从而提升ORACLE数据库的整体性能。同时,监控和调整...
Oracle提供了`OPTIMIZER_MODE`初始化参数来控制优化器的行为。这个参数的不同设置会影响优化器的选择: - **CHOOSE**: 缺省值,优化器会根据是否有可用的统计信息来选择使用基于成本的优化方法(CBO)或基于规则的...
Instant 级别:修改初始化参数,例如在 init.ora 文件中设定 OPTIMIZER_MODE=RULE、OPTIMIZER_MODE=CHOOSE、OPTIMIZER_MODE=FIRST_ROWS、OPTIMIZER_MODE=ALL_ROWS。 * B. Session 级别:当前会话输入 ALTER SESSION...
§3.4.23 优化方式(OPTIMIZER_MODE) 77 §3.4.24 进程数(PROCESSES) 77 §3.4.25 回滚段名称(ROLLBACK_SEGMENTS) 78 §3.4.26 服务名(SERVICE_NAMES) 78 §3.4.27 会话的数(SESSIONS) 78 §3.4.28 共享池大小(SHARED...
影响优化器优化目标的因素主要有三个:OPTIMIZER_MODE 初始化参数、数据字典中的 CBO 统计数据、用来改变 CBO 优化目标的 Hints。 OPTIMIZER_MODE 初始化参数 ------------------------- OPTIMIZER_MODE 初始化...
在实际操作中,用户可以通过修改`optimizer_mode`参数来改变会话的优化器模式。例如,使用`ALTER SESSION SET optimizer_mode = FIRST_ROWS`可将当前会话设置为First Rows模式。此外,初始化参数文件(如`init.ora`...
Oracle 优化器有两种模式:CBO(Cost-Based Optimizer)和 RBO(Rule-Based Optimizer)。CBO 是基于成本的优化器,需要使用统计信息,据此计算最佳的执行计划;而 RBO 是基于规则的优化器,根据 Oracle 设定的规则...
综上所述,基于成本的Oracle优化法则不仅涵盖了如何通过优化器的不同模式选择合适的执行计划,还涉及到了成本计算的具体方法及其背后的逻辑。了解这些原则可以帮助数据库管理员和开发人员更有效地管理和优化Oracle...
2. **优化器的优化模式(Optimizer Mode)** - **Rule**: 使用RBO方式进行优化。 - **Choose**: 默认模式,根据表和索引是否存在统计信息来决定使用CBO还是RBO。 - **First_Rows**: 强制优化器优先返回查询结果集的...
可以通过对 init.ora 文件中 OPTIMIZER_MODE 参数的各种声明来设置缺省的优化器。 Rule 优化器基于规则来选择执行计划,而 COST 优化器基于成本来选择执行计划。CHOOSE 优化器则根据是否运行过 analyze 命令来选择...