深入mysql慢查詢設定的詳解

來源:互聯網
上載者:User

在web開發中,我們經常會寫出一些SQL語句,一條糟糕的SQL語句可能讓你的整個程式都非常慢,超過10秒一般使用者就會選擇關閉網頁,如何最佳化SQL語句將那些已耗用時間 比較長的SQL語句找出呢?MySQL給我們提供了一個很好的功能,那就是慢查詢!所謂的慢查詢就是通過設定來記錄超過一定時間的SQL語句!那麼如何應用慢查詢呢?

1.開啟MySQL的慢查詢日誌功能
預設情況下,MySQL是不會記錄超過一定執行時間的SQL語句的。要開啟這個功能,我們需要修改MySQL的設定檔,windows下修改my.ini,Linux下修改my.cnf檔案,在[mysqld]最後增加如下命令:

複製代碼 代碼如下: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,呵呵)

(4)如果記錄檔不想放在data目錄,我們可以通過如下配置指定存放的目錄及記錄檔名:
slow_query_log_file=file_name
其中file_name就是你的存放日誌的目錄和檔案名稱,在這裡注意有的資料上可能是log-slow-queries=file_name,這個在mysql5.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);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.