轉:使用 Tkprof 分析 ORACLE 跟蹤檔案
【README】 昨天在驗證oracle 資料庫效能的時候,查詢日誌中 打出了 exec time , fetch time 不懂什麼意思,所以就記錄了下;
A 表 680w, count 耗時5秒;
B表 2013w, count 耗時10秒;
A inner join B 連表查詢 100 個客戶, 耗時 0.036/0.756秒 exec/fetch 返回 470條記錄;
A inner join B 連表查詢 500 個客戶, 耗時 0.138/3.382秒 exec/fetch 返回 2300條記錄;
轉自: https://blog.csdn.net/tianlesoftware/article/details/5632003
Tkprof是一個用於分析Oracle跟蹤檔案並且產生一個更加清晰合理的輸出結果的可執行工具。如果一個系統的執行效率比較低,一個比較好的方法是通過跟蹤使用者的會話並且使用Tkprof工具使用排序功能格式化輸出,從而找出有問題的SQL語句。
一. TKPROF 命令語法:
TKPROF filename1, filename2 [ SORT = [ opion][,option] ]
[ PRINT = integer ]
[ AGGREGATE = [ YES | NO ] ]
[ INSERT = filename3 ]
[ SYS = [ YES | NO ] ]
[ [ TABLE = schema.table ] | [ EXPLAIN = user/password ] ]
[ RECORD = filename ]
相關說明:
filename1 指定的輸入檔案,可以是多個檔案聯起來。
Filename2 格式化輸出檔案。
SORT 在輸出到輸出檔案前,先程式排序。如果省去,則按照實際使用的順序輸出到檔案中。排序選項有以下多種:
prscnt number of times parse was called
prscpu cpu time parsing
prsela elapsed time parsing
prsdsk number of disk reads during parse
prsqry number of buffers for consistent read during parse
prscu number of buffers for current read during parse
prsmis number of misses in library cache during parse
execnt number of execute was called
execpu cpu time spent executing
exeela elapsed time executing
exedsk number of disk reads during execute
exeqry number of buffers for consistent read during execute
execu number of buffers for current read during execute
exerow number of rows processed during execute
exemis number of library cache misses during execute
fchcnt number of times fetch was called
fchcpu cpu time spent fetching
fchela elapsed time fetching
fchdsk number of disk reads during fetch
fchqry number of buffers for consistent read during fetch
fchcu number of buffers for current read during fetch
fchrow number of rows fetched
userid userid of user that parsed the cursor
PRINT 只列出輸出檔案的第一個integer 的SQL語句。預設為所有的SQL語句。
AGGREGATE 如果= NO ,則不對多個相同的SQL進行彙總。
INSERT SQL 語句的一種,用於將跟蹤檔案的統計資訊儲存到資料庫中。在TKPROF建立指令碼後,在將結果輸入到資料庫中。
SYS 禁止或啟用 將SYS使用者所釋出的SQL語句列表到輸出檔案中。
TABLE 在輸出到輸出檔案前,用於存放臨時表的使用者名稱和表名。
EXPLAIN 對每條SQL 語句確定其執行規劃。並將執行規劃寫到輸出檔案中。
其中比較有用的一個排序選項是fchela,即按照elapsed time fetching來對分析的結果排序(記住要設定初始化引數timed_statistics=true),生成的檔案將把最消耗時間的sql放在最前面顯示。另外一個有用的引數就是sys,這個引數設定為no可以阻止所有以sys使用者執行的sql被顯示出來,這樣可以減少分析出來的檔案的複雜度,便於檢視。
二. 對Tkprof命令輸出的解釋:
首先解釋輸出檔案中列的含義:
CALL:每次SQL語句的處理都分成三個部分
Parse:這步將SQL語句轉換成執行計劃,包括檢查是否有正確的授權和所需要用到的表、列以及其他引用到的物件是否存在。
Execute:這步是真正的由Oracle來執行語句。對於insert、update、delete操作,這步會修改資料,對於select操作,這步就只是確定選擇的記錄。
Fetch:返回查詢語句中所獲得的記錄,這步只有select語句會被執行。
COUNT:這個語句被parse、execute、fetch的次數。
CPU:這個語句對於所有的parse、execute、fetch所消耗的cpu的時間,以秒為單位。
ELAPSED:這個語句所有消耗在parse、execute、fetch的總的時間。
DISK:從磁碟上的資料檔案中物理讀取的塊的數量。一般來說更想知道的是正在從快取中讀取的資料而不是從磁碟上讀取的資料。
QUERY:在一致性讀模式下,所有parse、execute、fetch所獲得的buffer的數量。一致性模式的buffer是用於給一個長時間執行的事務提供一個一致性讀的快照,快取實際上在頭部儲存了狀態。
CURRENT:在current模式下所獲得的buffer的數量。一般在current模式下執行insert、update、delete操作都會獲取buffer。在current模式下如果在快取記憶體區發現有新的快取足夠給當前的事務使用,則這些buffer都會被讀入了快取區中。
ROWS: 所有SQL語句返回的記錄數目,但是不包括子查詢中返回的記錄數目。對於select語句,返回記錄是在fetch這步,對於insert、update、delete操作,返回記錄則是在execute這步。
相關文章
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- Git跟蹤與提交檔案Git
- .gitignore忽略跟蹤指定檔案Git
- git刪除未跟蹤檔案Git
- git列出跟蹤的檔案列表Git
- git clean清除未跟蹤檔案Git
- 分析及格式化trace檔案 - TKPROF (Transient Kernel Profiler)
- git列出所有已經跟蹤檔案Git
- 如何在 Git 中取消檔案的跟蹤Git
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- oracle跟蹤常用內部事件號Oracle事件
- 使用 SpanMetrics Connector 將 OpenTelemetry 跟蹤轉換為指標指標
- Windows下用命令列工具ADRCI跟蹤日誌檔案Windows命令列
- [20191221]12c查詢跟蹤檔案內容.txt
- [原始碼分析] OpenTracing之跟蹤Redis原始碼Redis
- 演算法分析__遞迴跟蹤演算法遞迴
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- git將當前目錄下所有檔案納入跟蹤Git
- [20211227]抽取跟蹤檔案中的繫結變數值.txt變數
- [20190917]oracle跟蹤事件簡單寫法.txtOracle事件
- 如何使用專案問題追蹤軟體跟進管理專案
- 一個非侵入式跟蹤分析程式
- Oracle 歸檔使用情況分析Oracle
- 妙用 Intellij IDEA 建立臨時檔案,Git 跟蹤不到的那種IntelliJIdeaGit
- 使用 Python 和 Prometheus 跟蹤天氣PythonPrometheus
- 如何使用iPhone限制IP地址跟蹤iPhone
- 【轉載】淘寶SPM流量跟蹤體系
- 如何收集Oracle程式中的SQL跟蹤資訊KUOracleSQL
- 網路地址轉換(NAT)的報文跟蹤
- git 刪除已經新增到git跟蹤的檔案或資料夾Git
- 如何分配和跟蹤專案工作量?
- Git命令git update-index --assume-unchanged,忽略不想提交的檔案(忽略跟蹤)GitIndex
- 如何跟蹤資訊流廣告轉化資料?
- MYSQL sql執行過程的一些跟蹤分析(二.mysql優化器追蹤分析)MySql優化
- [20200326]dbms_monitor跟蹤與SQL語句分析.txtSQL
- sp_trace_setfilter sqlserver篩選跟蹤或跟蹤過濾FilterSQLServer
- Oracle 10g大檔案表空間(轉)Oracle 10g