<br/>
#之前的一篇分享提到,MySQL的日誌類型可以分為三種,錯誤日誌(error_log),查詢日誌(query_log),和二進位日誌(binary_log),error_log的介紹與用法詳見MySQL日誌之error_log,本文主要介紹general_log和slow_query_log的原理和用法。
通用查詢日誌(general_log)主要用於查詢各client連接資料庫時的相關資訊與在資料庫上執行的SQL語句,設定方法為:
1、查詢通用查詢日誌是否開啟與其存放路徑:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | OFF | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
螢幕輸出中general_log
和general_log_file
記錄了目前通用查詢日誌的開關狀態與路徑。
2、開啟通用查詢日誌
set global general_log = ON
查詢是否成功:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | ON | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
成功。
退出一下看有沒有生成並且正確記錄:
[root@localhost ~]# cat /var/lib/mysql/localhost.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 2017-08-14T09:33:11.364650Z 5 Quit 2017-08-14T09:33:20.671113Z 6 Connect root@localhost on using Socket 2017-08-14T09:33:20.671323Z 6 Query select @@version_comment limit 1 2017-08-14T09:33:22.964610Z 6 Query show variables like '%log%' 2017-08-14T09:33:24.574224Z 6 Quit
成功,並且我們可以看到,log不僅記錄了SQL命令,同時還包括了執行時間、Id、命令類型等相關資料
慢查詢日誌記錄了SQL語句時間超過了預設的long_query_time的語句,在資料量較大的情況下,可以看看慢查詢日誌中有哪些語句需要進行最佳化。
1、慢查詢日誌的設定
慢查詢日誌的設定可以在資料庫設定檔my.cnf
中查到:
[root@localhost ~]# cat /etc/my.cnf | grep -E 'long|slow|not_using_indexes'long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes
可以看到:
long_query_time = 1
的意思是SQL語句執行時間超過1s的,對其進行記錄;<br/>log-slow- queries = /var/log/mysql/slow.log
是對慢查詢日誌路徑的設定;<br/>log_queries_not_using_indexes
意思是不使用索引的語句,可以縮小記錄的目標
實際設定與通用查詢日誌相同,在mysql互動介面中輸入指令開啟慢查詢日誌:
set slow_query_log = ON
2、查詢是否成功
[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument
成功。
但注意,slow_query_log可能會記錄到與使用者權限和密碼相關的語句,因此在使用慢查詢日誌檔案時請注意日誌的安全保存。
以上是MySQL中普通、慢查詢日誌的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!