全名為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或者磁碟)而返回的行數非常少;
SQL優化工具
sql語句是對資料庫進行操作的惟一途徑,對資料庫系統的效能起著決定性的作用。對於同一條件下的sql語句寫法有很多,其中一些寫法往往對效能又有很大影響。但是每個人掌握sql語言的水平不同,如何才能保證寫出高效能的sql呢?針對這種情況,人工智慧自動sql優化工具應運而生。現在我就向大家介紹這樣一款工具...
SQL優化工具
使用說明 解決依賴 python3 ubuntu sudo apt get install python3 python3 pip 如果兩個包都有安裝可跳過此步驟 centos sudo yum install python36 python36 pip 如果兩個包都有安裝可跳過此步驟 執行啟動指令...
SQL優化工具
相關鏈結執行sql語句 耗時34秒左右 linux系統下的測試 3494 note 第1步 對sql解析優化之後得到的sql select ca id as ca id sub id as sub id ca number as ca number sub number as sub number ...