在web開發中,我們經常會寫出一些sql語句,一條糟糕的sql語句可能讓你的整個程式都非常慢,超過10秒一般使用者就會選擇關閉網頁,如何優化sql語句將那些執行時間 比較長的sql語句找出呢?mysql給我們提供了乙個很好的功能,那就是慢查詢!所謂的慢查詢就是通過設定來記錄超過一定時間的sql語句!那麼如何應用慢查詢呢?
1.開啟mysql的慢查詢日誌功能
預設情況下,mysql是不會記錄超過一定執行時間的sql語句的。要開啟這個功能,我們需要修改mysql的配置檔案,windows下修改my.ini,linux下修改my.cnf檔案,在[mysqwww.cppcns.comld]最後增加如下命令:
複製** **如下:
slow_query_log
long_query_time = 1
2.測試慢查詢日誌功能
(1)進入mysql控制台,執行如下語句:
複製** **如下:
select sleep(2);
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.12 sec)
(2)檢視慢查詢日誌檔案think-slow.log,在檔案最後發現:
複製** **如下:
# time: 121120 20:06:23
# user@host: root[root] @ localhost [127.0.0.1]
# query_time: 2.104120 lock_time: 0.000000 rows_sent: 1 rows_examined: 0
set timestamp=1353413183;
select sleep(2);
3.解釋:
(1)slow_query_log 這句是開啟記錄慢查詢功能,slow_query_log=0關閉;slow_query_log=1開啟(這個1可以不寫)(2)long_query_time = 1 這句是記錄超過1秒的sql執行語句
(3)那麼這個日誌檔案存放在什麼地方呢?
預設是放在mysql的data目錄,並且檔名為host_name-slow.log即 主機名-slow.log,比如在筆者的開發機上就是think-slow.log(因為偶用的thinkpad,呵rabmehnqw呵)
(4)如果日誌檔案不想放在data目錄,我們可以通過如下配置指定存放的目錄及日誌檔名:
slow_query_log_file=file_name
其中file_name就是你的存放日誌的目錄和檔名,在這裡注意有的資料上可能是log-slow-queries=file_name,這個在mysql程式設計客棧5.5版已經過時!
4.如何記錄低於1s的慢查詢記錄呢?
mysql5.21版以前long_query_time 引數的單位是秒,預設值是10。這相當於說最低只能記錄執行時間超過 1 秒的查詢,怎麼記錄查詢時間超過100毫秒的sql語句記錄呢?在mysql5.21+後版本支援毫秒記錄
(1)進入mysql控制台,執行如下sql語句:
複製** **如下:
set global long_query_time=0.1
該句是設定記錄慢查詢超過時間100ms的sql,記住要重啟mysql才能生效!
(2)測試
進入mysql控制台,執行如下sql語句:
複製** **如下:
select sleep(0.5);
檢視慢查詢日誌檔案,我們看到最後新增的新資訊:
複製** **如下:
# time: 121120 20:42:06
# user@host: root[root] @ localhost [127.0.0.1]
# query_time: 0.500028 ; lock_time: 0.000000 rows_sent: 1 rows_examined: 0
set timestamp=1353415326;
select sleep(0.5);
本文標題: 深入mysql慢查詢設定的詳解
本文位址: /shujuku/mysql/96440.html
深入mysql慢查詢設定的詳解
本篇文章是對mysql慢查詢設定進行了詳細的分析介紹,需要的朋友參考下 在web開發中,我們經常會寫出一些sql語句,一條糟糕的sql語句可能讓你的整個程式都非常慢,超過10秒一般使用者就會選擇關閉網頁,如何優化sql語句將那些執行時間 比較長的sql語句找出呢?mysql給我們提供了乙個很好的功能...
深入mysql慢查詢設定的詳解
1.開啟mysql的慢查詢日誌功能 預設情況下,mysql是不會記錄超過一定執行時間的sql語句的。要開啟這個功能,我們需要修改mysql的配置檔案,windows下修改my.ini,linux下修改my.cnf檔案,在 mysqld 最後增加如下命令 複製 如下 slow query log lo...
mysql慢查詢設定
show variables like slow query log show variables like long query time show variables like slow query log file show variables like log queries not usi...