[转帖]SQL优化_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4220 | 回复: 0   主题: [转帖]SQL优化        下一篇 
kim
注册用户
等级:中校
经验:1729
发帖:222
精华:0
注册:2011-7-21
状态:离线
发送短消息息给kim 加好友    发送短消息息给kim 发消息
发表于: IP:您无权察看 2011-9-15 10:48:16 | [全部帖] [楼主帖] 楼主

1.对于批处理,优化器的目标是获得最大的吞吐量;

2.对于交互式应用,优化器的目标是获得最佳响应时间;

3.优化器的行为受以下三种情况控制:(1)初始化参数OPTIMIZER_MODE;(2)SQL语句中使用的Hints;(3)数据字典中统计数据。

4.初始化参数的设置:(1)ALTER SYSTEM set optimizer_mode={Choose|Rule|First_rows|First_rows_n|All_rows} scope=spfile;
                    (2) AlTER SESSION set optimizer_mode={Choose|Rule|First_rows|First_rows_n|All_rows} scope=spfile;

5.优化器可以通过统计信息来选择优化方式,可以利用操作系统的定时器在凌晨业务低谷的时候更新统计信息,如采用包DBMS_STATS,以保证统计信息的处于最新状态,

6.保持优化计划的稳定性,参数OPTIMIZER_FEATURES_ENABLE引入的目的是当数据库版本变化时,仍保留原版本上的执行计划。

 ALTER SYSTEM optimizer_features_enable=9.2.0.3 scope=spfile


7.对SQL进行调优的工具:(1)Statspack; (2)EXPLAIN PLAN; (3)SQL trace and TKPROF (4)SQL*PLUS autotrace feature;(5)Oracle SQL Analyze
  (1) Statspack中包含:执行次数最多的SQL语句的排行榜,解析次数最多的SQL语句的排行榜,SQL语句去读取buffer cache次数最多的排行榜,从磁盘上读到buffer cache中次数最多的排行榜。
  (2) 得到SQL的执行计划的方法:使用命令EXPLAIN PLAN;使用SQL Trace;使用Automatic Workload Repository;使用动态性能视图v$sql_plan;使用SQL*Plus AUTOTRACE.

 SQL>@?/rdbms/admin/utlxplan.sql  //创建plan_table表
SQL>EXPLAIN PLAN FOR
2   SELECT last_name FROM hr.employees;
SQL>@?/rdbms/admin/utlxpls.sql;    //第一种方法:把EXECUTION PLAN从plan_table表中显示出来
SQL>SELECT * FROM TABLE(dbms_xplan.display);   //第二种方法:把EXECUTION PLAN从plan_table表中显示出来


8.使用 SQL Trace 和 TKPROF,trace 文件的存放位置是由参数user_dump_dest的值决定的。TKPROF是用来解读SQL Trace的,输入是一个trace file,输出是一个报表。

 SQL>ALTER SESSION SET sql_trace=True;
SQL>ALTER SESSION SET sql_trace=False;
$cd /u01/admin/pitts/udump
$tkprof pitts_ora_5390.trc myoutput.txt


9.使用SQL*PLUS的autotrace工具:
  配置autotrace的步骤:(1)cd [ORACLE_HOME]/rdbms/admin
                       (2) log into SQL*PLus as SYSTEM
                       (3) SQL>@utlxplan
                       (4) SQL>CREATE PUBLIC SYSNONYM PLAN_TABLE FOR PLAN_TABLE;
                       (5) SQL>GRANT ALL ON PLAN_TABLE TO PUBLIC;
                       (6) SQL>@?/sqlplus/admin/plustrce;
                       (7) SQL>grant plustrace to public;

   使用autotrace:  SQL>set autot[race] {off | on | trace[only]} [exp[lain]] [stat[istics]]

 SQL>SELECT ****
SQL>set autot off




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论