SQL性能優化工具TKPROF



全名爲Trace Kernel Profile,用來格式化跟蹤文件,是一個命令行工具。
基本的格式如下:
tkprof tracefile outputfile …
tracefile:要分析的trace文件
outputfile:格式化後的文件
可選參數及說明如下:
EXPLAIN 爲每個SQL語句產生執行計劃,指定用戶方案和密碼,使用其中的PLAN_TABLE表
TABLE 當EXPLAIN選項生效時可用,指定替代PLAN_TABLE的表
SYS 啓用該選項時不包含遞歸調用,=NO時,sys用戶運行的SQL語句(例如,解析操作階段對數據字典的遞歸查詢)不輸出到輸出文件中
SORT 指定SQL語句的排序方式
RECORD 指定文件名,將SQL語句寫入,排除遞歸的SQL
PRINT 限定只輸出指定數量的分析SQL語句,默認是無限制的,只有在和參數sort一起使用的時候纔有意義
INSERT 指定一個文件名,容納相關的插入SQL語句,將分析的SQL及統計插入TKPROF_TABLE
AGGREGATE是否將相同sql語句的執行信息合計起來,默認爲yes
WAITS 指定是否統計跟蹤文件中的等待事件
SORT選項可分三類,解析選項,執行選項和取數據選項(PRS,EXE,FCH),根椐這三種操作佔用相關資源來排序。
TKPROF針對SQL的統計也分爲三類:解析(prsela),執行(exeela),取數(fchela)
 
Count:Parse,Execute,Fetch發生的次數
CPU:表示處理數據調用花去的CPU時間,以秒爲單位
Elapsed:是處理數據庫調用花費的總的時間,以秒爲單位
Disk:表示物理讀取的數據塊數量
Query:是在一致性模式(consistent mode)下從高速緩存邏輯讀取的塊數量
Current:代表在當前模式下從高速緩存邏輯讀取的塊數量
Rows:代表處理的數據行數量。對於查詢來說,這就是獲取的行數量。對於INSERT、DELETE、MERGE以及UPDATE 等語句來說,這是所影響的行數量

解析的信息開始兩行Misses in library cache during parse和Misses in library cache during execute提供了發生在解析和執行調用階段的硬解析數量。
如果在執行調用時沒有硬解析發生,Misses in library cache during execute這一行將不存在。

執行計劃分爲兩部分:
第一部分稱爲行源操作(Row Source Operation ),是遊標關閉且開啓跟蹤情況下寫到跟蹤文件中的執行計劃。這意味着如果應用程序不關閉遊標而重用它們的話,不會有新的針對重用遊標的執行計劃寫入到跟蹤文件中。
第二部分,叫做執行計劃 (Execution Plan),是由指定了explain參數的TKPROF生成的。既然這是隨後生成的,所以和第一部分不一定完全匹配。萬一你看到不一致,前者是正確的。
兩個執行計劃都通過Rows列提供執行計劃中每個操作返回的行數,不是處理的。
對於每個行源操作來說,可能還會提供如下的運行時統計:
cr:是一致性模式下邏輯讀出的數據塊數
pr:是從磁盤物理讀出的數據塊數
pw:是物理寫入磁盤的數據塊數
time是以微秒錶示的總的消逝時間。要注意根據統計得到的值不總是精確的。實際上,爲了減少開銷,可能用了採樣
輸出文件的結尾給出了所有關於跟蹤文件的信息。首先可以看到跟蹤文件名稱、版本號、用於這個分析所使用的參數sort的值。然後,給出了所有會話數量與SQL語句數量。

從TKPROF的統計結果觀察,發現下列特徵的SQL可能需要調優:
1. 消耗過度的CPU資源;
2. 花費太長的時間在Parse,Execute,Fetch階斷;
3. 從磁盤讀數據塊太多而從SGA中讀塊很少;
4. 存取太多的數據塊(從SGA或者磁盤)而返回的行數很少;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章