mysql 效能優化之慢查詢
阿新 • • 發佈:2018-12-23
在執行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 可以跟上正則匹配模式,大小寫不敏感。
例子:
- 返回記錄最多的20條記錄
mysqldumpslow -s r -t 20 sqlslow.log - 得到平均訪問次數最多的20條sql
mysqldumpslow -s ar -t 20 sqlslow.log