SQL Tuning Advisor(STA)到底做了什么(六)

2014-11-24 08:33:55 ? 作者: ? 浏览: 1
3 and e.employee_id < :bnd;
33 rows selected.
Statistics
----------------------------------------------------------
9 recursive calls
0 db block gets
27 consistent gets
5 physical reads
0 redo size
5403 bytes sent via SQL*Net to client
514 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
33 rows processed
--从上面的统计信息可知,SQL优化之前的consistent gets为27,大于优化之后的consistent gets
--注,此处未对比physical reads,一般情形下我们考虑的是consistent gets,如果需要两个都对比,应每次执行SQL前flush buffer cache
-->接下来可以移除sql profile
hr@CNMMBO> set autot off;
hr@CNMMBO> exec dbms_sqltune.drop_sql_profile('hr_profile');
PL/SQL procedure successfully completed.
5、使用STA优化awr中SQL的脚本
[sql]
robin@SZDB:~/dba_scripts/custom/sql> more tune_awr_sql.sql
SET ECHO OFF TERMOUT ON FEEDBACK OFF VERIFY OFF
SET SCAN ON PAGESIZE 9999
SET LONG 1000000 LINESIZE 180
COL recs FORMAT a145
VARIABLE tuning_task VARCHAR2(30)
DECLARE
l_sql_id v$session.prev_sql_id%TYPE:='&input_sql_id';
BEGIN
:tuning_task := dbms_sqltune.create_tuning_task(sql_id => l_sql_id,
begin_snap=>&input_begin_snap,
end_snap=>&input_end_snap,
task_name=>'&input_task_name');
dbms_sqltune.execute_tuning_task(:tuning_task);
END;
/
SELECT dbms_sqltune.report_tuning_task(:tuning_task) as recs
FROM dual;
SET VERIFY ON FEEDBACK ON
6、小结
a、SQL优化器在tuning模式下不会对原始SQL语句文本做任何修改。
b、对于使用STA优化的SQL语句,SQL优化器会转换优化器的模式或移除添加hint(如本例是忽略hint)以实现优化。
c、SQL profile会纠正查询优化器对基数的错误评估。
d、对于统计信息缺失或过时或根本不存在统计信息的情形,SQL优化器会给出建议以获取真实的统计信息。
e、SQL profile能够被导入导出。导出之前,该profile必须先被accept。
f、SQL profile所依赖的对象被删除后,SQL profile并不会被删除。但如果使用drop user username cascade时是例外。
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: