深入mysql慢查詢設定的詳解

2022-03-09 05:08:00 字數 2090 閱讀 6970

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);

深入mysql慢查詢設定的詳解

本篇文章是對mysql慢查詢設定進行了詳細的分析介紹,需要的朋友參考下 在web開發中,我們經常會寫出一些sql語句,一條糟糕的sql語句可能讓你的整個程式都非常慢,超過10秒一般使用者就會選擇關閉網頁,如何優化sql語句將那些執行時間 比較長的sql語句找出呢?mysql給我們提供了乙個很好的功能...

深入mysql慢查詢設定的詳解

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

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...