ORACLE Optimization
Oracle优化器:SQL分析和执行的优化工具,负责制定SQL执行计划。
Oracle优化器类型:RBO(基于规则优化器),CBO(基于代价优化器)
说明:ORACLE10g,RBO被弃用(原因相对单板,不能很好适应实际使用)
CBO工作原理:
1. 通过已有的统计信息,进行分析,然后选择最优的执行计划。
2. 如果没有统计信息,ORACLE采用动态采样的技术。
CBO运行模式:
1. FIRST_ROW(n): Oracle执行SQL时,有效考虑将结果集中前n条记录最快反馈 --> 分页显示的网站
2. ALL_ROWS: Oracle执行SQL时,将SQL执行完毕,将全部结果集全部返回 --> OLAP系统
查看:
show parameter optimizer_mode;
修改:
1. SQL语句级别
select /*+ first_row(10) */ name from table;
select /*+ all_row */ name from table;
2. 修改PFILE参数
alter system set optimizer_mode=rule/choose/first_rows/all_rows;
3. session级别
alter session set optimizer_mode=all_rows;
SQL script optimization
1. Generate the explain plan of the sql script;
2. Find out the full scan or large cost;
3. Try to create index or change script to reduce the cost.
No sql change to optimize system
Write request is harder to optimize compare with read request
1. Hardware side: add cpu, memory, rac
2. Database side: memory parameter; SQL Profile, SPM; Cache table; index, function index;
If sql can not be change, add function index.
SQL Profile
1. Use SQL Tuning Advisor tool;
2. Depending on the result of SQL Tuning Advisor, to choose SQL Profile
Or manually use hint
3. Use dbms_sqltune.import_sql_profile load
Comments
Post a Comment