日常開發活動中,有時候需要對oracle執行計劃進行監控,以此來調優程序和數據庫方面的性能。
常用方法有以下幾種:
一、通過PL/SQL Dev工具
1、直接File->New->Explain Plan Window,在窗口中執行sql可以查看計劃結果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執行的行數,等價Rows。
2、先執行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執行計劃了,看到的結果和1中的一樣,所以使用工具的時候推薦使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計劃看到的信息不全,有些時候我們需要sqlplus的支持。
二、通過sqlplus
1、一般情況都是本機鏈接遠程服務器,所以命令如下:
sqlplus user/pwd@serviceName
此處的serviceName為tnsnames.ora中定義的命名空間。
2、執行set autotrace on,然后執行sql語句,會列出以下信息:
。。。(省略一些信息)
統計信息
----------------------------------------------------------
1 recursive calls?。w調用次數)
0 db block gets
2 consistent gets
0 physical reads (物理讀——執行SQL的過程中,從硬盤上讀取的數據塊個數)
0 redo size (重做數——執行SQL的過程中,產生的重做日志的大小)
358 bytes sent via SQL*Net to client
366 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory) 在內存中發生的排序
0 sorts (disk) 在硬盤中發生的排序
1 rows processed
省略部分信息和通過PL/SQL Dev工具查看執行計劃的信息一樣,下面的統計信息是更詳細的。
判斷SQL效率高低不關通過時間來衡量,還應該通過執行SQL執行狀態里面的邏輯讀的數量
邏輯讀=(db block gets+ consistent gets)
FengFly.Com
WWW.FENGFLy.COM FengFly.Com
原文來自:雨楓技術教程網 http://www.fengfly.com
原文網址:http://www.fengfly.com/plus/view-161902-1.html