p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widows: 2 }
p.western { font-family: "宋体", "SimSun"; font-size: 12pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 12pt }
p.ctl { font-family: "宋体", "SimSun"; font-size: 12pt }
a:visited { color: rgb(128, 0, 128) }
a.western:visited { }
a.cjk:visited { }
a.ctl:visited { }
a:link { color: rgb(0, 0, 255) }

Oracle
10G
强大的SQL优化工具:SQL
Tuning Advisor

15:05

Oracle
10G推出了强大的SQL优化工具:SQL
Tuning
Advisor,使用该功能必须保证优化器是CBO模式,对SQL进行优化需要执行DBMS_SQLTUNE包,因而需要advisor权限。

举个例子介绍如何优化一条发现问题的语句

--1.创建测试环境

SQL>
show user;

USER
is "SYS"

--授予普通用户advisor的权限

SQL>
grant
advisor to owner;

Grant
succeeded.

SQL>
conn owner/owner

Connected.

SQL>
create
table test1114 as select * from dba_objects;

SQL>
insert
into test1114 select * from dba_objects;

SQL>
set timing on

SQL>
set autot on

SQL>
select
* from test1114;

Elapsed:
00:01:09.81

Execution
Plan

----------------------------------------------------------

Plan
hash value: 3447467757

------------------------------------------------------------------------------

|
Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
Time |

------------------------------------------------------------------------------

|
0 | SELECT STATEMENT | | 110K| 21M| 588 (1)|
00:00:08 |

|
1 | TABLE ACCESS FULL| TEST1114 | 110K| 21M| 588 (1)|
00:00:08 |

------------------------------------------------------------------------------

Note

-----

-
dynamic sampling used for this statement (level=2)

Statistics

----------------------------------------------------------

29
recursive calls

1
db block gets

11646
consistent gets

1080
physical reads

176
redo size

16498937
bytes sent via SQL*Net to client

106046
bytes received via SQL*Net from client

9595
SQL*Net roundtrips to/from client

0
sorts (memory)

0
sorts (disk)

143898
rows processed

--2.创建优化任务

步骤一:
调用函数CREATE_TUNING_TASK来创建优化任务;

步骤二:
调用存储过程EXECUTE_TUNING_TASK执行该任务;

SQL>set
autotrace off

SQL>set
timing off

SQL>
declare

owner_sql
varchar2(30);

sqltext_me
clob;

begin

sqltext_me
:= 'select * from test1114';

--删除优化任务

dbms_sqltune.drop_tuning_task(task_name
=>'tuning_owner_test');

--创建优化任务

owner_sql
:= dbms_sqltune.create_tuning_task
(

sql_text
=> sqltext_me,

user_name
=> 'OWNER',

scope
=> 'comprehensive',

time_limit
=> 60,

task_name
=> 'tuning_owner_test',

description
=> 'task to tune a query on a specified table') ;

--执行优化任务

dbms_sqltune.execute_tuning_task(
task_name => 'tuning_owner_test');

end;

/

PL/SQL
procedure successfully completed.

--3.执行优化任务

调用dbms_sqltune.execute_tuning_task过程来执行前面创建好的优化任务。

SQL>
exec
dbms_sqltune.execute_tuning_task('tuning_owner_test');

PL/SQL
procedure successfully completed.

--4.检查优化任务的状态

-通过查看dba_advisor_task或者suser_advisor_tasks可以检查优化任务的状态

SQL>
SELECT
task_name,status FROM USER_ADVISOR_TASKS WHERE task_name
='tuning_owner_test';

TASK_NAME     
STATUS

------------------------------
-----------

tuning_owner_test   
COMPLETED

--5.查看优化结果

查询dbms_sqltune.report_tning_task函数可以获得优化任务的结果

SQL>
set
long 888888

SQL>
set
serveroutput on size 888888

SQL>
set
lines 100

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

DBMS_SQLTUNE.REPORT_TUNING_TASK('TUNING_OWNER_TEST1500')

--------------------------------------------------------------------------------

GENERAL
INFORMATION SECTION

-------------------------------------------------------------------------------

Tuning
Task Name : tuning_owner_test1500

Tuning
Task Owner : OWNER

Workload
Type : Single SQL Statement

Execution
Count : 2

Current
Execution : EXEC_146

Execution
Type : TUNE SQL

Scope
: COMPREHENSIVE

Time
Limit(seconds): 60

Completion
Status : COMPLETED

Started
at : 11/14/2016 15:00:36

Completed
at : 11/14/2016 15:00:37

-------------------------------------------------------------------------------

Schema
Name: OWNER

SQL
ID : dzrzmbsu9krk8

SQL
Text : select * from test1114

-------------------------------------------------------------------------------

FINDINGS
SECTION (1 finding)

-------------------------------------------------------------------------------

1-
Statistics Finding

---------------------

Table
"OWNER"."TEST1114" was not analyzed.

Recommendation

--------------

-
Consider collecting optimizer statistics for this table.

execute
dbms_stats.gather_table_stats(ownname => 'OWNER', tabname =>

'TEST1114',
estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,

method_opt
=> 'FOR ALL COLUMNS SIZE AUTO');

Rationale

---------

The
optimizer requires up-to-date statistics for the table in order to

select
a good execution plan.

-------------------------------------------------------------------------------

EXPLAIN
PLANS SECTION

-------------------------------------------------------------------------------

1-
Original

-----------

Plan
hash value: 3447467757

------------------------------------------------------------------------------

|
Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
Time |

------------------------------------------------------------------------------

|
0 | SELECT STATEMENT | | 139K| 27M| 588 (1)|
00:00:08 |

|
1 | TABLE ACCESS FULL| TEST1114 | 139K| 27M| 588 (1)|
00:00:08 |

------------------------------------------------------------------------------

-------------------------------------------------------------------------------

分析语句为

execute
dbms_stats.gather_table_stats(ownname => 'OWNER', tabname =>
'TEST1114', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
method_opt => 'FOR ALL COLUMNS SIZE AUTO');

--6.删除优化任务

调用dbms_sqltuen.drop_tuning_task删除已经存在的优化任务

SQL>
exec
dbms_sqltune.drop_tuning_task('tuning_kingsql_test1500');

PL/SQL
procedure successfully completed.

Oracle 10G强大的SQL优化工具:SQL Tuning Advisor的更多相关文章

  1. SQL优化工具 - SQL Server Profiler与数据库引擎优化顾问

    最近项目做到几千个学生分别去人脸识别记录(目前约630000行)中查询最后一次记录,可想而知性能这块是个麻烦.于是乎,GET到了SQL Server Profiler和数据库引擎优化顾问这俩工SHEN ...

  2. 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )

    SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...

  3. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综 ...

  4. SQL优化工具

    SQL优化工具 什么是索引? 打个比方,我们在使用MySQL用作查询的时候就好比查字典,索引就好比字典的偏旁部首页.如果没有索引我们查询一个文字就需要一页页的翻,显然这种方式效率很低.如果我们对某一字 ...

  5. SQL优化工具SQLAdvisor使用

    一.简介在数据库运维过程中,优化SQL是业务团队与DBA团队的日常任务.例行SQL优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的SQL优化方式包括但不限于:业务层优化.SQL逻辑优 ...

  6. 美团SQL优化工具SQLAdvisor

    介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL逻 ...

  7. 美团开源 SQL 优化工具 SQLAdvisor

    https://www.oschina.net/news/82725/sqladvisor-opensource https://github.com/Meituan-Dianping/SQLAdvi ...

  8. sql优化工具--美团SQLAdvisor

    美团点评SQL优化工具SQLAdvisor开源 介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 S ...

  9. 【SQL优化】SQL优化工具

    SQLAdvisor 是由美团点评公司北京DBA团队开发维护的 SQL 优化工具:输入SQL,输出索引优化建议. 它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度 ...

随机推荐

  1. 深入浅出Node.js (附录C) - Node编码规范

    C.1 根源 C.2 编码规范 C.2.1 空格与格式 C.2.2 命名规范 C.2.3 比较操作 C.2.4 字面量 C.2.5 作用域 C.2.6 数组与对象 C.2.7 异步 C.2.8 类与模 ...

  2. Google Map API 学习六

    今天其实收货很大的 1.new google.maps.Circle 就是如何在地图上标注一个圆 3.getAnimation 在这里是通过获取Marker是否存在动作,然后如果存在动作的话,就将动作 ...

  3. php-Mysql示例1

  4. tomcat 配置内存相关

    今天早上 ,tomcat 网站页面上出现报错问题.最后还是一位同事解决的,这里记录一下. 1.看了一下页面,他说是内存溢出. 首先找到 双击 Tomw.exe 出现如下图 然后需要配置堆栈大小

  5. 简单tableView的使用

    UITableView是一个用于显示列表的视图,可以作为子视图镶嵌在主视图上,可以滑动,选取各种参数 定义: @interface ViewController : UIViewController& ...

  6. 高清摄像头MIPI接口与ARM处理器的连接

    MIPI摄像头常见于手机.平板中,支持500万像素以上高清分辨率.它的全称为“Mobile Industry Processor Interface”,分为MIPI DSI 和MIPI CSI,分别对 ...

  7. linux性能优化

    一.最小化安装系统二.关闭NetworkManager服务. NetworkManger服务如果启动,当你手动配置网卡时会发生冲突 [root@linuxangel ~]# /etc/init.d/N ...

  8. 来更新一篇blog吧

    最近做了一下hackerrank的20/20的比赛.平时都只能过2题,这周顺利地通过了四道题目竟然.当妄图冲击衬衫的时候,发现剩下三个题一点招数都没有,之后就跑去看了一下node.js了... 这次比 ...

  9. Java中的成员初始化顺序和内存分配过程

    Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...

  10. 登陆用户怎样获取验证码和保存用户到cookie中

    User表: User.java package user.domain; import java.io.Serializable; import java.util.Date; public cla ...