天天看點

FAQ系列 | 監控平均SQL響應時長

導讀

MySQL裡如何監控平均SQL響應時長?

問題由來

對MySQL的性能名額監控,除了關注tps(每秒可執行的事務數)、qps(每秒請求數)兩個衡量吞吐量的重要名額外,還應該監控平均SQL響應時長名額。

怎麼做

有幾個可選方案:

1、利用MySQL提供的benchmark()函數。這個函數的作用是模拟進行N次某種調用,這樣一來,我們就可以利用這個函數調用N次專門的存儲過程,根據其執行耗時,以此作為平均SQL響應時長的依據;

2、利用pt-query-digest工具,并結合tcpdump實時抓取每個SQL請求,也就能分析出每個SQL請求的響應時長了;

3、使用Percona或者MariaDB分支版本提供的QUERY_RESPONSE_TIME插件功能,它可以幫我們統計平均SQL響應時長的分布區間,類似直方圖功能;

第一種相對比較簡單但不夠精确(不過也是夠用的),第二種略麻煩些但可以看到每次請求的詳細記錄,第三種則隻能看到整體的分布,無法看到每次請求的詳細記錄。

寫在最後

監控性能名額時,除了關注吞吐量,還應該關注每次請求的平均響應時長。以高速公路收費站為例,有幾個收費口基本可表示其并發收費能力(tps),而每輛車的平均通行時間如果很久的話,相信你也是受不了的是不是 :)