mysql監控優化(三)慢查詢

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

一、配置慢查詢web

Linux:
在mysql配置文件my.cnf中增長:log-slow-queries=/opt/data/slowquery.log (指定日誌文件存放位置,能夠爲空,系統會給一個缺省的文件host_name-slow.log)sql

                                                    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服務。spa

二、查詢mysql慢查詢狀態日誌

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

    

三、解析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

   

相關文章
相關標籤/搜索