效能測試必備監控技能MySQL

2022-09-23 03:52:03 字數 1978 閱讀 9776

效能測試過程中,資料庫相關指標的監控是不可忽視的,在這裡我們就mysql的監控配置及重點涉及效能的一些引數進行說明。

在筆者的日常效能測試過程中,重點關注了這些引數,但不代表僅僅只有這些引數對效能有影響。

配置以下配置選項開啟記錄慢查詢和沒有使用索引的查詢功能

編輯 my.cnf或者my.ini檔案。

注: 只對linux下進行說明。windows請自行去搜尋。

將下述幾行前的註釋符號去掉,以開啟相關功能

log_slow_queries = /var/log/mysql/mysql-slow.log

long_query_time = 2

log-queries-not-using-indexes

輸入,即可在console中檢視到對應的慢sql和未使用索引的查詢語句了。

tail -f mysql.log

顯示哪些執行緒正在執行,如下圖:

1.png

這個命令中最關鍵的就是state列,mysql列出的狀態主要有以下幾種:

==大部分狀態對應很快的操作,只要有一個執行緒保持同一個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。==

檢視mysql伺服器狀態資訊。

2.png

直接使用該命令會輸入幾百行的資料,很難看。

下面我們看幾個常用的帶選項的命令

show status like 'uptime';

show status like 'com_select';

show [global] status like 'com_insert';

show [global] status like 'com_update';

show [global] status like 'com_delete';

show status like 'thread_%';

show status like 'connections';

show status like 'threads_cached';

show status like 'table_locks_immediate';

show status like 'table_locks_waited';

show status like 'slow_queries';

show global status like '%slow%';

慢查詢日誌有可能會有很多重複的sql語句,我們如何過濾呢?mysql有自帶的命令mysqldumpslow可進行查詢,例下列命令可以查出訪問次數最多的20個sql語句

mysqldumpslow -s c -t 20 host-slow.log

通過mysql自帶profiling(效能分析)工具可以診斷某個sql各個執行階段消耗的時間,每個執行階段在cpu disk io等方面的消耗情況。

show variables like '%profiling%';