開啟MYSQL慢查詢日誌,監控有效率問題的SQL
阿新 • • 發佈:2018-11-23
- 操作步驟
- 首先使用使用者登入linux客戶端,執行命令 mysql -u mjb -p, mjb是資料庫使用者名稱,系統會提示輸入密碼,輸入密碼回車,登入成功
- 輸入命令show variables like 'slow_query_log',
- 頁面會顯示是否開啟了慢查詢日誌,slow_query_log =ON,代表已經開啟
- 如果未開啟,則需要執行該命令set global slow_query_log=on;
- 頁面會顯示是否開啟了慢查詢日誌,slow_query_log =ON,代表已經開啟
- 通過設定log_queries_not_using_indexes開啟為使用索引的監控
- 輸入命令show variables like 'log_queries_not_using_indexes';
- log_queries_not_using_indexes=OFF,代表未開啟,需要執行該命令
- set global log_queries_not_using_indexes=on;
- 通過long_query_time設定監控閥值,也就是超過多少秒就記錄,單位是秒,此處設定為0.1也就是100毫秒
- 輸入命令show variables like 'long_query_time';
- 系統設定的為1秒,如果需要修改為0.1秒,則需要執行如下命令
- set global long_query_time=0.1;
- 通過以上設計,基本上可以開始優化工作了,set global 只是全域性session生效,重啟後失效,如果需要以上配置永久生效,需要在mysql.cnf中配置
- [mysqld]
slow_query_log = 1
log_queries_not_using_indexes =1
long_query_time = 0.1
slow_query_log_file = /apps/logs/mysql/slow3306.log
如果是linux,就通過以下命令或service等其他方式重啟
啟動:/etc/init.d/mysqld(mysql) start
停止:/etc/init.d/mysqld(mysql) stop
重啟:/etc/init.d/mysqld(mysql) restart
最後檢視慢查詢日誌所在的位置,通過檢視slow_query_log_file - 執行命令show variables like 'slow_query_log_file' \G
- 顯示的日誌記錄在/apps/logs/mysql/slow3306.log目錄
- 測試
- 記錄成功
- [mysqld]
- 首先使用使用者登入linux客戶端,執行命令 mysql -u mjb -p, mjb是資料庫使用者名稱,系統會提示輸入密碼,輸入密碼回車,登入成功
欄位名 | 含義 | 值 |
---|---|---|
Time | int型別時間戳 加 時間 | 180913 10:39:57 |
[email protected] | 執行SQL的主機資訊 | mjb[mjb] @ localhost [] |
Thread_id | 執行緒id | 5271182 |
Query_time | 執行時間 | 2.000219 |
Lock_time | 鎖定時間 | 0.000000 |
Rows_sent | 返回記錄數 | 1 |
Rows_examined | 掃描行數 | 0 |
SET timestamp | SQL執行用時 | 1536806397 |
select sleep(2) | SQL語句 | select sleep(2); |
- 設定成功,效能測試完成,可以把監控到的慢SQL日誌檔案進行檢視,看是哪些SQL語句需要進行優化