【Mysql知識】mysql慢日誌
阿新 • • 發佈:2021-01-24
1.慢查詢相關引數
slow_query_log :是否開啟慢查詢日誌,1表示開啟,0表示關閉。 log-slow-queries :舊版(5.6以下版本)MySQL資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給一個預設的檔案host_name-slow.log slow-query-log-file:新版(5.6及以上版本)MySQL資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給一個預設的檔案host_name-slow.log long_query_time :慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。 log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。 log_output:日誌儲存方式。log_output='FILE'表示將日誌存入檔案,預設值是'FILE'。log_output='TABLE'表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。 MySQL資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output='FILE,TABLE'。日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需<br>要能夠獲得更高的系統性能,那麼建議優先記錄到檔案。
操作示例:
mysql> show variables like '%slow_query_log%'; +---------------------+-------------------------------------+ | Variable_name | Value | +---------------------+-------------------------------------+ | slow_query_log | ON | | slow_query_log_file | /data/mysql/data/localhost-slow.log | +---------------------+-------------------------------------+ 2 rows in set (0.03 sec) mysql> show variables like '%long_query_time%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.03 sec)
其中,long_query_time的單位是秒
2.修改慢查詢引數
方式一:
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)
方式二:
修改my.cnf檔案,增加或修改引數 slow_query_log 和 slow_query_log_file 後,然後重啟 MySQL 伺服器,如下所示:
slow_query_log =1
slow_query_log_file=/data/mysql/data/localhost-slow.log
修改慢查詢的時間:
mysql> set global long_query_time=1;
注意:使用命令 set global long_query_time=1 修改後,需要重新連線或新開一個會話才能看到修改值。你用 show variables like 'long_query_time' 檢視是當前會話的變數值,你也可以不用重新連線會話,而是用 show global variables like 'long_query_time';
3.完成一次慢查詢與日誌排查
執行一條慢查詢SQL語句:
mysql> select sleep(2);
檢視是否生成慢查詢日誌
ls /usr/local/mysql/data/slow.log
檢視具體字串的慢日誌
tail -fn99 /data/mysql/data/localhost-slow.log |grep 'select sleep'
參考文件:
https://www.cnblogs.com/kerrycode/p/5593204.html
https://www.cnblogs.com/huangguowen/p/10234043.html
(完)