【DB2】監控動態SQL語句


一、db2監控動態SQL(快照監控

db2示例用戶登陸后,使用腳本語句db2 get snapshot for all on dbname>snap.out

也可以使用db2 get snapshot for dynamic SQL on dbname>snap.out,此語句是只記錄上一語句中的部分

Tips:如果需要監控盡可能多的SQL語句,建議增加DBM配置參數


以下是動態SQL快照

Dynamic SQL Snapshot Result

 Database name                      = QINDB

 Database path                      = /db2home/db2inst1/db2inst1/NODE0000/SQL00002/
 Number of executions               = 3 --編譯次數,為累加值
 Number of compilations             = 1 --SQL語句編譯的最長時間
 Worst preparation time (ms)        = 87
 Best preparation time (ms)         = 87
 Internal rows deleted              = Not Collected
 Internal rows inserted             = Not Collected
 Rows read                          = Not Collected
 Internal rows updated              = Not Collected
 Rows written                       = Not Collected
 Statement sorts                    = Not Collected
 Statement sort overflows           = Not Collected
 Total sort time                    = Not Collected
 Buffer pool data logical reads     = Not Collected
 Buffer pool data physical reads    = Not Collected
 Buffer pool temporary data logical reads   = Not Collected
 Buffer pool temporary data physical reads  = Not Collected
 Buffer pool index logical reads    = Not Collected
 Buffer pool index physical reads   = Not Collected
 Buffer pool temporary index logical reads  = Not Collected
 Buffer pool temporary index physical reads = Not Collected
 Buffer pool xda logical reads      = Not Collected
 Buffer pool xda physical reads     = Not Collected
 Buffer pool temporary xda logical reads    = Not Collected
 Buffer pool temporary xda physical reads   = Not Collected
 Total execution time (sec.microsec)= Not Collected --SQL語句的總執行時間
 Total user cpu time (sec.microsec) = Not Collected
 Total system cpu time (sec.microsec)= Not Collected
 Total statistic fabrication time (milliseconds) = Not Collected
 Total synchronous runstats time  (milliseconds) = Not Collected
 Statement text                     = select * from len.cust_info where cust_id like '%09' --SQL語句文本


Number of executetions:可以幫助找到最優的那些重要語句,它對於幫助計算語句的平均執行時間也很有用。

Rows read :可以幫助識別讀取行數最多的動態SQL語句,如果讀取行數最多,通常意味着進行全表掃描。

Total execution time:是將語句每次執行時間加起來得到的總時間,我們可以利用該時間除以Number of executrtions,可以得到平均執行時間。如果語句的平均執行時間很長,可能是因為表掃描或者出現鎖等待。


基於上述使用語句db2 get snapshot for all on dbname生成的文本內容,我們可以使用grep對快照的輸出內容執行搜索

例如:

<1> 識別是否存在死鎖

grep -n "Deadlocks detected" snap.out |grep -v "= 0" |more


<2> 搜索執行最頻繁的SQL語句

grep -n "Number of executions" snap.out | grep -v "= 0" | sort -k 6rn |more


<3> 查詢總的執行時間

 grep -n "Total execution time" snap.out | grep -v "= 0.0"| sort -k 6nr| more



二、監控動態SQL(db2top)

使用db2top命令找出最頻繁、最耗時的SQL(使用db2數據庫用戶登錄)

db2top –d dbname 

按D,進入到SQL監控界面(如果沒開大寫,可以使用shift+d)

按z,倒序排序

輸入排序列的序號,從0開始

按L,輸入SQL的序列號,查看SQL明細

以下為示例操作:

(1)db2inst1@Linux:/qinys> db2top -d qindb

image


(2)按D進入

image


(3)按z倒序排序,此處我輸入3,表示按照執行時間排序

image

(4)按L輸入SQL序列號,查看SQL詳細

image


image

從上圖我們就可以查看SQL詳細了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM