使用ORACLE SQL Tuning advisor快速优化低效的SQL语句

ORACLE10G以后版本的SQL Tuning advisor可以从以下四个方面给出优化方案

  (1)为统计信息丢失或失效的对象收集统计信息
  (2)考虑优化器的任何数据偏差、复杂谓词或失效的统计信息
  (3)重新构建 SQL 以优化性能
  (4)提出新索引建议


下面来实际测试:


1、为SQL_id创建一个STA(SQL Tuning advisor)分析任务(使用SYS用户执行)

SQL> variable task_li_test varchar2(2000);

SQL>exec :task_li_test:=dbms_sqltune.create_tuning_task(sql_id=>'1z9atcd704psu',time_limit=>600,task_name=>'li_sql_1');

 

2、执行上面创建的STA(需要一定的时间)

SQL> exec dbms_sqltune.execute_tuning_task(task_name=>'li_sql_1');

 

3、查询优化任务创建与执行的情况

selecta.owner,b.task_id,b.task_name,a.created from dba_advisor_tasks a,dba_advisor_log b where a.task_id=b.task_id and a.task_name='li_sql_1'

owner

task_id

task_name

created

SYS

106698

    li_sql_1

2013-9-14 16:57

 

4、查看任务优化报告(优化的详细内容)

SQL>select dbms_sqltune.report_tuning_task('li_sql_1') from dual;

 

5、接受建议的 SQL 概要文件,即创建SQL_Profle

SQL> execute dbms_sqltune.accept_sql_profile(task_name => 'li_sql_1',task_owner =>'SYS', replace => TRUE);

 

6、查看第5步创建起来的SQL_Profile信息

SQL>select a.name,a.task_id,a.created from dba_sql_profiles a,dba_advisor_log b where a.task_id=b.task_id and b.task_name='li_sql_1'

NAME

TASK_ID

 CREATED

SYS_SQLPROF_01411bdf99410002

106699

    14-9月 -13 05.49.00.000000 下午

 

7、再次执行SQLID为‘1z9atcd704psu’的语句

7.1、执行时间由原来的6分钟降为3秒

7.2、查看执行计划,执行计划中包含下面信息,说明是使用了创建的SQL_Profile所起到的效果

  - SQL profile SYS_SQLPROF_01411bdf99410002used for this statement

 

8、删除SQL_Profile

SQL>exec dbms_sqltune.drop_sql_profile(name =>'SYS_SQLPROF_01411bdf99410002');

 

9、删除优化任务

SQL> exec dbms_sqltune.drop_tuning_task(task_name => 'li_sql_1');


  本文为“踩点”原创,转发请说明出处。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT圈黎俊杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值