mysql監控優化(三)慢查詢


        顧名思義,慢查詢日志中記錄的是執行時間較長的query,也就是我們常說的slowquery,通過設--log-slow-queries[=file_name]來打開該功能並設置記錄位置和文件名。慢查詢日志采用的是簡單的文本格式,可以通過各種文本編輯器查看其中的內容。其中記錄了語句執行的時刻,執行所消耗的時間,執行用戶,連接主機等相關信息。MySQL 還提供了專門用來分析滿查詢日志的工具程序mysqlslowdump,用來幫助數據庫管理人員解決可能存在的性能問題。

1、配置慢查詢

Linux:
在mysql配置文件my.cnf中增加:log-slow-queries=/opt/data/slowquery.log (指定日志文件存放位置,可以為空,系統會給一個缺省的文件host_name-slow.log)

                                                    long_query_time=2 (記錄超過的時間,默認為10s)

                                                    log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據情況決定是否開啟)
Windows:
在my.ini的[mysqld]添加如下語句:log-slow-queries = E:\web\mysql\log\mysqlslowquery.log   

                                                      long_query_time = 2(其他參數如上)

慢查詢的配置也可以通過執行命令來設置,這樣就不用重啟mysql服務了。

set global slow_query_log=on;
set global long_query_time=1;#設置記錄查詢超過多長時間的sql
set global slow_query_log_file=‘/opt/data/slow_query.log’;#設置mysql慢查詢日志路徑,此路徑需要有寫權限
這種方式不用重啟mysql服務。

2、查詢mysql慢查詢狀態

      SHOW VARIABLES LIKE '%query%';
      使用這個語句可以看到當前mysql慢查詢是否開啟,以及mysql的慢查詢日志文件在哪。
      slow_query_log #是否開啟慢查詢
     slow_query_log_file #日志的存放位置
     long_query_time #超過多少秒的查詢就寫入日志

    

3、解析mysql慢查詢日志

     使用mysqldumpslow命令可以解析mysql慢查詢日志。
     Mysqldumpslow命令參數如下:
     -s,是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;
     -t,是top n的意思,即為返回前面多少條的數據;
     -g,后邊可以寫一個正則匹配模式,大小寫不敏感的;

 

    比如說要按照sql執行時間最長的前20條sql
    mysqldumpslow -s t -t 20 -g 'select'/opt/data/slowquery_2016050921.log
    得到按照時間排序的前10條里面含有左連接的查詢語句。
    mysqldumpslow -s t -t 10 -g 'left join'/opt/data/slowquery_2016050921.log

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM