查看SQL执行计划常用方法

2016-02-19 19:18 6 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的查看SQL执行计划常用方法,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  不论是做为开发DBA还是维护DBA,总是或多或少地遇到SQL执行效率或者说SQL调优问题,查看执行计划是必须的。一般我们可以用3种方法查看:

  一、explain plan for

  举例就足以说明其用法  

   sys@ORCLexplainplanfor
  2selectsysdatefromdual;
  Explained.
  sys@ORCLselect*fromtable(dbms_xplan.display());
  PLAN_TABLE_OUTPUT
  ----------------------------------------------------------------------------------------------------
  --------------------------------------------------------------------
  |Id|Operation|Name|Rows|Bytes|Cost|
  --------------------------------------------------------------------
  |0|SELECTSTATEMENT|||||
  |1|TABLEACCESSFULL|DUAL||||
  --------------------------------------------------------------------
  Note:rulebasedoptimization
  9rowsselected.

  二、利用TKPROF工具

  TKPROF是一个用于分析oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是跟踪用户的会话并且使用TKPROF工具的排序功能格式化输出,从而找出有问题的SQL语句。

  TKPROF命令后面的选项及输出文件各个列的含义在这里不做详细的介绍。 google一下就会有很多资料。

  下面简单描述一下TKPROF工具的使用步骤:

  1、在session级别设置sql_trace=true

   sys@ORCLaltersessionsetsql_trace=true;
  Sessionaltered.

  如果要在pl/sql中对session级别设置true,可以使用dbms_system这个包:

  sys@ORCL exec dbms_system.set_sql_trace_in_session(sid,serial#,true);

  2、指定一下生成的trace文件的名字,便于查找:  

   sys@ORCLaltersessionsettracefile_identifier='yourname';

  3、执行SQL语句。

  4、利用TKPROF工具格式化输出的trace 文件:

 [oracle@q1test01~] $tkprof/oracle/admin/orcl/udump/orcl_ora_10266_yourname.trc/oracle/yourname.txtexplain=user/pwdaggregate=yessys=nowaits=yessort=fchela

  5、查看生成的文件再设置sql_trace=false: 

   sys@ORCLaltersessionsetsql_trace=false;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  三、set autotrace on

  此种方法最常用,关于如何设置sql*plus的autotrace这里也不做详细介绍,因为google上面资料确实太多了。有心的朋友可以去找找,保证有一大堆适合你的资料。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  举个例子,这种方法简单易懂: 

   ctoc@ORCLsetautotraceon
  ctoc@ORCLselectsysdatefromdual;
  SYSDATE
  ---------
  25-JUN-08
  ExecutionPlan
  ----------------------------------------------------------
  0SELECTSTATEMENTptimizer=CHOOSE
  10TABLEACCESS(FULL)OF'DUAL'
  Statistics
  ----------------------------------------------------------
  0recursivecalls
  0dbblockgets
  3consistentgets
  0physicalreads
  0redosize
  522bytessentviaSQL*Nettoclient
  655bytesreceivedviaSQL*Netfromclient
  2SQL*Netroundtripsto/fromclient
  0sorts(memory)
  0sorts(disk)
  1rowsprocessed

来源:http://www.tulaoshi.com/n/20160219/1620644.html

延伸阅读
1.调整内存 sp_configure 'show advanced options',1 GO RECONFIGURE Go sp_configure 'awe enabled', 1 GO RECONFIGURE Go sp_configure 'min server memory',1024 Go sp_configure 'max server memory',3072 GO RECONFIGURE Go PS: OS需要打开AWE 即在boot.ini里 添加 /3G 或者 /PAE (企业版)才能支持4G以上内存! 2.关...
标签: ASP
  其实就是利用文件“global.asa”!许多ASP编程新手都想知道这东西是什么?事实上,global.asa就是一个事件驱动程序,其中共包含4个事件处理过程: Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd。   当网站的一个应用程序的页面第 一次被用户访问时,global.asa就被装载进内存。当应...
1、from子句组装来自不同数据源的数据; 2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组; 4、使用聚集函数进行计算; 5、使用having子句筛选分组; 6、计算所有的表达式; 7、使用order by对结果集进行排序。 举例说明: 在学生成绩表中 (暂记为 tb_Grade), 把 "考生姓名"内容不为空的记录按照 "考...
标签: SQLServer
1. 查看数据库的版本     select @@version     常见的几种SQL SERVER打补丁后的版本号:     8.00.194   Microsoft SQL Server 2000   8.00.384   Microsoft SQL Server 2000 SP1   8.00.532   Microsoft SQL Server 2000 SP2   8.00.760   Microsoft SQL Server 200...
标签: ASP
       其实就是利用文件“global.asa”!许多ASP编程新手都想知道这东西是什么?事实上,global.asa就是一个事件驱动程序,其中共包含4个事件处理过程: Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd。    当网站的一个应用程序的页面第一次被用户访问时,gl...

经验教程

532

收藏

59
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部