1. 程式人生 > >mysql 效能優化之慢查詢

mysql 效能優化之慢查詢

在執行mysql語句的時候,我們可能會遇到2003的錯誤(執行超時錯誤),或者執行太耗時間了,這時我們需要定位到那些語句比較耗時,從而有目標的優化對應的sql語句。那麼怎麼定位到這些sql語句呢?
這時,我們就需要考慮到mysql的慢查詢了。對於mysql的操作我覺得native非常好,所以,記錄下,使用native如何進行慢查詢?

  • 開啟native -> 工具 -> 伺服器監視在這裡插入圖片描述
    2.選擇要監視的程序,勾選對應的環境變數。
    在這裡插入圖片描述3.設定對應的環境變數
  • a) slow_query_log 設定為ON 開啟慢查詢記錄
  • b) slow_query_log_file 設定儲存的log路徑
  • c) long_query_time設定慢查詢記錄的時間,單位是s,可以設定成小數
    4.驗證功能是否開啟
    執行一個大於查詢時間的語句,推薦 select sleep(大於查詢時間);然後看下是否記錄在對應的log檔案中。
    5.使用對應的分析工具(是一個perl指令碼),mysqldumpslow.pl進行分析,該檔案存放在mysql的安裝目錄下(預設為C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin),該指令碼檔案的執行需要安裝ActivePerl https://www.activestate.com/products/activeperl/downloads/
    。 安裝完成後便可以執行。
    6.mysqldumpslow 的引數
    -s 按照那種方式排序
    c:訪問計數
    l:鎖定時間
    r:返回記錄
    al:平均鎖定時間
    ar:平均訪問記錄數
    at:平均查詢時間
    -t 是top n的意思,返回多少條資料。
    -g 可以跟上正則匹配模式,大小寫不敏感。
    例子:
  1. 返回記錄最多的20條記錄
    mysqldumpslow -s r -t 20 sqlslow.log
  2. 得到平均訪問次數最多的20條sql
    mysqldumpslow -s ar -t 20 sqlslow.log