MySQL啟用慢查詢日誌記錄方法

來源:互聯網
上載者:User

在MySQL中,慢查詢的界定時間是由MySQL內建參數變數long_query_time來指定的,其預設值為10(單位:秒),我們可以通過show variables like 'long_query_time';指令來查看該參數變數的資訊:
long_query_time的預設值為10秒

不過,在程式開發過程中,我們認為慢速查詢的界定時間並沒有10秒這麼長,依據不同項目的不同需求,我們一般將慢查詢的界定時間設定為1~5秒之間。我們可以使用指令set long_query_time = 秒數來設定long_query_time變數的值。
設定long_query_time的值為1秒

修改了long_query_time參數後,我們還需要讓MySQL能夠記錄下慢查詢的日誌資訊。因為,在預設情況下,MySQL並不會記錄慢查詢的日誌資訊。如果要記錄慢查詢日誌,我們需要以命令列方式進入MySQL安裝目錄in目錄(也可將該目錄添加到PATH環境變數中),使用如下命令重新啟動MySQL:

 代碼如下 複製代碼

    #中括弧[]內的部分是可選的,file_name表示記錄檔路徑
    #在5.5及以上版本的MySQL中,使用如下命令啟動:
    mysqld --show-query-log[=1] [--show-query-log-file=file_name]

    #在5.0、5.1等低版本的MySQL中,使用如下命令啟動:
    mysqld --log-slow-queries[=file_name]

在上述命令中,如果沒有指定記錄檔名,則記錄檔名稱預設為主機名稱-slow.log;如果沒有指定檔案路徑或者指定的檔案路徑不是絕對路徑,則記錄檔將預設存放在MySQL設定檔my.ini中參數datadir所指定的目錄下。

此外,你也可以將上述命令列啟動命令配置到my.ini中的[mysqld]節點下,這樣無需每次手動鍵入上述命令來啟動。

 代碼如下 複製代碼

    [mysqld]
    #設定慢查詢界定時間為1秒
    long_query_time=1

    #5.0、5.1等版本配置如下選項
    log-slow-queries="mysql_slow_query.log"
    #5.5及以上版本配置如下選項
    slow-query-log=On
    slow_query_log_file="mysql_slow_query.log"

注意:雖然慢查詢的名字中只包含了”查詢”,實際上並不僅僅表示SELECT查詢操作,諸如INSERT、UPDATE、DELETE、CALL等其他DML操作,只要是超過指定時間的,都可以稱之為“慢查詢”,並且會記錄在慢查詢日誌中。

使用explain擷取SELECT語句的執行計畫資訊


這個時候,我們就需要使用EXPLAIN指令來擷取SELECT語句執行的細節資訊。在MySQL中資料庫中,EXPLAIN指令的用法非常簡單,如下所示:

EXPLAIN SELECT語句

 代碼如下 複製代碼
--例如:EXPLAIN SELECT * FROM admin WHERE user_id = 1;

如果是在Oracle資料庫中,我們同樣可以使用如下SQL語句來擷取SELECT語句的執行計畫資訊:

 代碼如下 複製代碼

EXPLAIN PLAN FOR SELECT語句
--例如:EXPLAIN PLAN FOR SELECT * FROM admin WHERE user_id = 1;

在這裡,我們以MySQL為例,在資料庫中執行上述EXPLAIN指令,將會輸出如下結果(user_id是admin表的主鍵列):
explain擷取SELECT語句執行計畫詳情

explain擷取SELECT語句執行計畫詳情

為了進一步說明上述執行計畫資訊所表示的含義,我們再次執行帶格式化的EXPLAIN命令

 代碼如下 複製代碼
EXPLAIN SELECT * FROM admin WHERE user_id = 1G;

(G在MySQL中表示格式化輸出結果),我們將會得到如下資訊:

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE 
        table: admin
         type: const
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 1
          ref: const
         rows: 1
        Extra:
1 row in set (0.00 sec)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.