一、慢查詢日誌概念
mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是執行10s以上的語句。預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。
#off表示未開啟
mysql> show variables like '%slow_query_log%';
| variable_name | value |
| slow_query_log | off |
| slow_query_log_file | /roobo/mysqldata/database/a1-slow.log |
2 rows in set (0.00 sec)
#=1表示開啟,0表示關閉。
mysql> set global slow_query_log=1;
query ok, 0 rows affected (0.00 sec)
#on表示已開啟
mysql> show variables like '%slow_query_log%';
| variable_name | value |
| slow_query_log | on |
| slow_query_log_file | /roobo/mysqldata/database/a1-slow.log |
2 rows in set (0.00 sec)
慢查詢日誌存放目錄
[root@a1 ~]# tail -f /roobo/mysqldata/database/a1-slow.log
/roobo/server/mysql/bin/mysqld, version: 5.6.24-log (source distribution). started with:
tcp port: 3306 unix socket: /tmp/mysql.sock
time id command argument
三、在配置檔案中新增慢查詢引數
3.1、修改配置檔案,新增慢查詢引數
vi my.cnf
slow_query_log =1
slow_query_log_file=/usr/local/mysql/data/localhost-slow.log
#重啟伺服器
/etc/init.d/mysql restart
備註:系統缺省會給乙個預設的檔案host_name-slow.log
3.2、檢視慢查詢時間
那麼開啟了慢查詢日誌後,什麼樣的sql才會記錄到慢查詢日誌裡面呢? 這個是由引數long_query_time控制,預設情況下long_query_time的值為10秒,可以使用命令修改,也可以在my.cnf引數裡面修改。關於執行時間正好等於long_query_time的情況,並不會被記錄下來。也就是說,在mysql原始碼裡是判斷大於long_query_time,而非大於等於。從mysql 5.1開始,long_query_time開始以微秒記錄sql語句執行時間,之前僅用秒為單位記錄。如果記錄到表裡面,只會記錄整數部分,不會記錄微秒部分。
mysql> show variables like 'long_query_time';
| variable_name | value |
| long_query_time | 10.000000 |
1 row in set (0.00 sec)
mysql> set global long_query_time=5;
query ok, 0 rows affected (0.00 sec)
mysql> show global variables like 'long_query_time';
| variable_name | value |
| long_query_time | 5.000000 |
1 row in set (0.00 sec)
3.3 慢查詢的儲存方式
第一種:儲存到檔案中
第二種:儲存到mysql.slow_log表中
log_output引數是指定日誌的儲存方式。log_output='file'表示將日誌存入檔案,預設值是'file'。
log_output='table'表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。
mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output='file,table'。
日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案.
#儲存在**中
mysql> show variables like '%log_output%';
| variable_name | value |
| log_output | table |
1 row in set (0.00 sec)
#儲存在檔案中
mysql> show variables like '%log_output%';
| variable_name | value |
| log_output | file |
1 row in set (0.00 sec)
參考:
mysql開啟慢查詢日誌 MySQL慢日誌體系建設
慢查詢日誌是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的sql語句,在很大程度上會影響資料庫整體的效能,是mysql優化的乙個重要方向。在58的雲db平台建設中,慢sql系統作為乙個非常重要功能模組,不僅是dba日常運維使用,我們也希望通過該功能可以協助開發人員更快速定位業...
mysql慢日誌解析 mysql 慢日誌分析
啟用 slow log 有兩種啟用方式 1,在my.cnf 裡 通過 log slow queries file name 2,在mysqld程序啟動時,指定 log slow queries file name 選項 比較的五款常用工具 mysqldumpslow,mysqlsla,myprofi...
mysql 慢日誌 MYSQL慢查詢和日誌
一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...