您好,登錄后才能下訂單哦!
這篇文章主要介紹“Mysql慢查詢日志的過程”,在日常操作中,相信很多人在Mysql慢查詢日志的過程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mysql慢查詢日志的過程”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
mysql慢查詢日志對于跟蹤有問題的查詢非常有用,可以分析出代碼實現中耗費資源的sql語句,對我們程序的優化有很高的參考。本篇主要將慢查詢日志的開啟,日志分析,這也是優化SQL程序的一般步驟中至關重要的一步。
1.mysql慢查詢日志
打開mysql的慢查詢日志很簡單,只需要在mysql的配置文件里(windows系統是my.ini,linux系統是my.cnf)的[mysqld]下面加上
Java代碼
log-slow-queries=mysql_slow.log
long_query_time=3
其中log-slow-queries為日志的文件名,可以指定目錄,如log-slow- queries=D:\mysql_slow.log; long_query_time為定義多長的查詢我們定義為慢查詢,并記錄在log-slow-queries 指定的文件中,在這里我們定義超過3秒的查詢進行記錄。
配置完成以后重啟Mysql服務器,執行show variables like '%slow%';查看慢查詢日志是否開啟,如果slow_query_log和log_slow_queries顯示為on,那說明服務器的慢查詢日志已
經開啟了。如下顯示:
Java代碼
mysql> show variables like '%slow%';
+---------------------+----------------+
| Variable_name | Value |
+---------------------+----------------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | mysql_slow.log |
+---------------------+----------------+
4 rows in set (0.00 sec)
slow_launch_time跟慢查詢日志沒有任何關系, 它代表的是thread create的一個閾值,如果要看 long_query_time,可以用
Java代碼
mysql> show variables like '%long%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
2.mysql慢查詢日志分析
建表如下圖,建表勿要給text加上索引,否則可能出現不了超過3秒的查詢,數據表填充了4194304條數據。
我們來執行一個超過3秒的查詢,如下:
Java代碼
mysql> select * from wei where text='orange';
+---------+--------+
| id | text |
+---------+--------+
| 4103519 | orange |
+---------+--------+
1 row in set (3.79 sec)
再執行一個超過3秒的和一個沒有超過3秒的:
Java代碼
mysql> select * from wei where text='xishizhaohua';
Empty set (3.82 sec)
Java代碼
[mysql> select * from wei where id=4564;
+------+--------------------+
| id | text |
+------+--------------------+
| 4564 | yyyyyyyyyyyyyyyyyy |
+------+--------------------+
1 row in set (0.02 sec)
可以通過下面的命令查看現在這個session有多少個慢查詢:
現在我們可以查看mysql_slow.log(win7默認在C:\ProgramData\MySQL\MySQL Server 5.1\data下面),里邊內容如下,內容比較明了,包括查詢花費的語句及時間,還包括查詢時的時間戳等信息,其中Rows_examined為檢查的 行數,對我們優化也很有幫助
# Time: 121017 17:38:54
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.794217 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 4194304
SET timestamp=1350466734;
select * from wei where text='orange';
# Time: 121017 17:46:22
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.819219 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 4194304
SET timestamp=1350467182;
select * from wei where text='xishizhaohua';
到此,關于“Mysql慢查詢日志的過程”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。