SQL性能优化工具TKPROF
全名為Trace Kernel Profile,用來格式化跟蹤文件,是一個命令行工具。
主要的格式例如以下:
tkprof tracefile outputfile …
tracefile:要分析的trace文件
outputfile:格式化后的文件
可選參數及說明例如以下:
EXPLAIN 為每一個SQL語句產生運行計劃,指定用戶方案和password,使用當中的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或者磁盤)而返回的行數非常少;
轉載于:https://www.cnblogs.com/mengfanrong/p/3767771.html
總結
以上是生活随笔為你收集整理的SQL性能优化工具TKPROF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift中文教程(三)--流程控制
- 下一篇: 哪种代理适合用于Web数据采集