1.記錄慢查詢配置
show variables where variable_name like 'slow%' ; --檢視預設日誌路徑
查詢結果:--不用的機器可能不同
slow_query_log_file=/var/lib/mysql/centos-slow.log
修改mysqld配置檔案:/usr /my.cnf[一般在/etc/my.cnf,本機在/user/my.cnf],新增以下幾項:
[mysqld]
slow_query_log=on
long_query_time=0.2
long_query_time較低(5.0及之前)的mysql版本不支援小數
set global slow_query_log=on; --如果通過這個指令碼設定的話,重啟mysql後就失效了
log-queries-not-using-indexes --表示記錄沒有使用索引的語句到慢查詢日誌
配置好上述引數後,重啟mysqld服務,開始對效能差的查詢sql進行監測。
2.分析慢查詢日誌
執行一段時間後,慢查詢日誌會記錄到上面路徑的日誌檔案中,因為日誌記錄很多,不可能一條一條記錄的去分析,可以通過mysql自帶的msyqldumpslow進行分析。
1) # 找出平均執行時間最長的10條sql
mysqldumpslow -t 10 -s at /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-at.log
2) # 找出總執行時間最長的10條sql
mysqldumpslow -t 10 -s t /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-t.log
3) # 找出執行次數最多的10條sql
mysqldumpslow -t 10 -s c /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-c.log
4) # 找出返回記錄數最多的10條sql
mysqldumpslow -t 10 -s r /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-r.log
3.記錄所有sql
[mysqld]
general_log=on
show variables like '%log%';
查詢結果:--記錄所有sql的日誌檔案
general_log_file=/var/lib/mysql/centos.log
或者將long_query_time的值設定為0記錄所有的sql
4.p6spy
效能優化,通常需要將同一事務中所有執行的sql進行分析和優化,這就要獲取這一事務執行過程中執行的所有sql語句。一般應用的架構均有控制是否顯示所有操作sql的引數,如果沒有的話,可以通過p6spy記錄。
1)將p6spy.jar包拷貝到web-inf/lib目錄下
2)將spy.properties拷貝到web-inf/classes目錄下
3)將應用的驅動修改為com.p6spy.engine.spy.p6spydriver
4)將spy.properties中的realdriver設定為真實的驅動,com.mysql.jdbc.driver
5)執行應用,可以看到tomcat的bin目錄下有個spy.log檔案,這個檔案記錄了所有操作的sql語句。僅需關注statement型別的即可,resultset和result型別的語句不需關心。
5.參考資料
效能優化 MySQL慢查日誌的儲存格式
如下圖所示 說明 1 time 180526 1 06 54 查詢的執行時間 2 user host root root localhost id 4 執行sql的主機資訊 3 query time 0.000401 lock time 0.000105 rows sent 2 rows exami...
mysql效能監控軟體 慢日誌分析利器
入題之前先講講為什麼寫這篇文章,這就不得不提起mysql與percona,阿里基於mysql開發了alisql,寫這篇文章的時候阿里已經將其開源,percona是一家領先的mysql諮詢公司,該公司基於mysql開發了percona server,percona server是一款獨立的資料庫產品,...
MySQL高階效能優化 慢日誌查詢
mysql的慢查詢日誌時mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句。具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。long query time的預設值為10,意思是執行10s以上的語句。就會被認作是慢查詢。預設情況下,mys...