mysqlpcap

mysqlpcap

watch sql base libpcap

我們經常的在 MySQL 裏不停的執行show processlist想了解最近執行的 sql 語句狀況,可常常拿不到我們想要的結果。

mysqlpcap 是一個基於 pcap 用於觀察 sql 語句執行情況的工具。它能夠瞭解到經過某個 MySQL 實例的 sql 語句以及 sql 影響的行數,還有 sql 的響應時間。

compile

yum install flex
yum install byacc
make

use

sudo ./mysqlpcap

use

format

timestamp           sql                                     latency(us)     rows            
---------           ---                                     -----------     ---             
9:22:33:815114      select 1                                291             1               
9:22:39:167115      select * from d limit 20000             229             -2              
9:22:39:167115      select * from d limit 20000             571             -2              
9:22:39:167115      select * from d limit 20000             707             -2              
9:22:39:167115      select * from d limit 20000             3508            -2              
9:22:39:167115      select * from d limit 20000             3628            -2              
9:22:39:167115      select * from d limit 20000             3675            20000           
9:22:45:227112      desc d                                  47891           3               
9:22:54:678621      insert into d values(1,2,3), (3,4,5)    33719           2    
  1. timestamp MySQL服務器接收到 sql 的時間。
  2. sql
  3. latency(us) 響應時間,MySQL服務器返回結果集的時間與timestamp的差值。由於結果集可能分多個tcp packet發送過來。 所以存在多條記錄。
  4. 對於select語句則是結果集的行數,對於其它則是影響的行數。結果集超過一個tcp packet的大小,則行數顯示在最後一個tcp packet對應的記錄上。 上面的例子,select * from d limit 20000 返回的結果集由 6 個tcp packet組成,所以有 6 行記錄,前5行的 rows 爲 -2 ,最後一行的 20000 纔是真是的返回行數。 latency顯示的每個tcp packet 的響應時間。


source code: https://github.com/hoterran/tcpcollect

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