oracle查询优化相关参数
2011-11-25 10:45
375 查看
QueryOptimizer一共经历了两个历史阶段:RBO和CBO。RBO时代,Oracle执行计划是通过一系列固化的规则进行执行计划生成。而CBO时代,则是利用系统统计量进行各种执行路径试算,获取相对相对成本最低的执行计划.
OPTIMIZER_MODE参数
控制执行计划的优化方法
ALL_ROWS不管是不是有统计信息,全部采用基于成本的优化方法,返回最大数的量数据
第一个是返回所有行的最小代价,第二个是返回前N行的最小代价,最后一个是返回前面的少量行的最好计划
修改全部session的optimizer_mode
alter system setoptimizer_mode=all_rows;
修改当前session的optimizer_mode
alter session setoptimizer_mode=all_rows;
OPTMIZER_DYNAMIC_SAMPLING参数
表示oracle查询优化时动态采样的级别,0-10
0不会采样,10级别最高,如果没有统计信息,采样将会很慢。
OPTIMIZER_FEATURES_ENABLE参数启用优化器采用版本行为
如果想采用旧版本的特性,需要设置OPTIMIZER_FEATURES_ENABLE为旧本本版本号.
如果升级数据库版本等,OPTIMIZER_FEATURES_ENABLE的优化器版本也将跟着改变.
Showparameter
OPTIMIZER_FEATURES_ENABLE;
SQL>alter system set OPTIMIZER_FEATURES_ENABLE="11.1.0.6";
如下的参数控制查询优化的行为
CURSOR_SHARING转换绑定变量的值,执行计划基于现存绑定变量。
DB_FILE_MULTIBLOCK_READ_COUNT查询是IO读操作块的数量,如果全表扫描将该值增大,默认为8.
SQL>show parameter DB_FILE_MULTIBLOCK_READ_COUNT;
SQL>alter system set DB_FILE_MULTIBLOCK_READ_COUNT=128;
OPTIMIZER_INDEX_CACHING这个参数影响嵌套循环连接索引在buffercache中的比例,值在0-100之间,100时优化器认为100%可以在内存中找到索引。
SQL>show parameter OPTIMIZER_INDEX_CACHING;
SQL>alter system set OPTIMIZER_INDEX_CACHING=0;
OPTIMIZER_INDEX_COST_ADJ这个参数优化器用来计算cost的,这个参数可以用来调整使用索引的代价,默认值是100,范围是1-10000,如果设为10,表示通过索引路径访问是正常通过索引路径访问的1/10.
SQL>show parameter OPTIMIZER_INDEX_COST_ADJ;
altersystem set OPTIMIZER_INDEX_COST_ADJ=100;
OPTIMIZER_MODE设置实例优化器的模式,ALL_ROWS,
SQL>show parameter optimizer_mode;
SQL>alter system set optimizer_mode=all_rows;
PGA_AGGREGATE_TARGET自动控制sort与join操作的内存大小。
STAR_TRANSFORMATION_ENABLED位图索引查询时设置为true
理解查询优化
查询优化根据访问路径与提示产生隐式的执行计划。
查询优化估计根据每个执行计划的成本,包括数据分布,表数据的存储,索引,语句访问的
分区,计算访问路径,joinorder,io,cpu及内存成本。
最后比较执行计划选择最低成本的执行计划。
OPTIMIZER_MODE参数
控制执行计划的优化方法
ALL_ROWS不管是不是有统计信息,全部采用基于成本的优化方法,返回最大数的量数据
FIRST_ROWS_
n
不管是不是有统计信息,全部采用基于成本的优化方法并以最快的速度,返回前
N
行记录
FIRST_ROWS
使用成本和试探法相结合的方法,查找一种可以最快返回前面少数行的方法
第一个是返回所有行的最小代价,第二个是返回前N行的最小代价,最后一个是返回前面的少量行的最好计划
修改全部session的optimizer_mode
alter system setoptimizer_mode=all_rows;
修改当前session的optimizer_mode
alter session setoptimizer_mode=all_rows;
OPTMIZER_DYNAMIC_SAMPLING参数
表示oracle查询优化时动态采样的级别,0-10
0不会采样,10级别最高,如果没有统计信息,采样将会很慢。
OPTIMIZER_FEATURES_ENABLE参数启用优化器采用版本行为
如果想采用旧版本的特性,需要设置OPTIMIZER_FEATURES_ENABLE为旧本本版本号.
如果升级数据库版本等,OPTIMIZER_FEATURES_ENABLE的优化器版本也将跟着改变.
Showparameter
OPTIMIZER_FEATURES_ENABLE;
SQL>alter system set OPTIMIZER_FEATURES_ENABLE="11.1.0.6";
如下的参数控制查询优化的行为
CURSOR_SHARING转换绑定变量的值,执行计划基于现存绑定变量。
DB_FILE_MULTIBLOCK_READ_COUNT查询是IO读操作块的数量,如果全表扫描将该值增大,默认为8.
SQL>show parameter DB_FILE_MULTIBLOCK_READ_COUNT;
SQL>alter system set DB_FILE_MULTIBLOCK_READ_COUNT=128;
OPTIMIZER_INDEX_CACHING这个参数影响嵌套循环连接索引在buffercache中的比例,值在0-100之间,100时优化器认为100%可以在内存中找到索引。
SQL>show parameter OPTIMIZER_INDEX_CACHING;
SQL>alter system set OPTIMIZER_INDEX_CACHING=0;
OPTIMIZER_INDEX_COST_ADJ这个参数优化器用来计算cost的,这个参数可以用来调整使用索引的代价,默认值是100,范围是1-10000,如果设为10,表示通过索引路径访问是正常通过索引路径访问的1/10.
SQL>show parameter OPTIMIZER_INDEX_COST_ADJ;
altersystem set OPTIMIZER_INDEX_COST_ADJ=100;
OPTIMIZER_MODE设置实例优化器的模式,ALL_ROWS,
FIRST_ROWS_
n
,
FIRST_ROWS
SQL>show parameter optimizer_mode;
SQL>alter system set optimizer_mode=all_rows;
PGA_AGGREGATE_TARGET自动控制sort与join操作的内存大小。
STAR_TRANSFORMATION_ENABLED位图索引查询时设置为true
理解查询优化
查询优化根据访问路径与提示产生隐式的执行计划。
查询优化估计根据每个执行计划的成本,包括数据分布,表数据的存储,索引,语句访问的
分区,计算访问路径,joinorder,io,cpu及内存成本。
最后比较执行计划选择最低成本的执行计划。
相关文章推荐
- Oracle 查看相关优化器参数
- MS SQL SERVER索引优化相关查询
- ORACLE多表查询优化
- 折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)
- oracle归档相关参数
- Oracle 百万行数据查询优化
- SqlServer查询优化查看参数
- 使用Limit参数优化MySQL查询 在找到一个记录后将停止查询
- oracle 查询操作用的相关信息 当前操作人 操作人主机名称 主机ip 连接oracle 外网ip
- Oracle查询性能优化
- 如何查询Oracle的隐含参数
- Oracle函数中将参数放在模糊查询中
- Linux 内核参数及Oracle相关参数调整
- MS SQL SERVER索引优化相关查询
- Oracle大字段(clob)模糊查询优化方法
- 如何查询oracle的隐藏参数的值
- Oracle临时表 优化查询速度
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- Oracle 性能相关的几个 视图 和 参数
- oracle中的相关子查询(correlated subqueries)