匹配MySQL慢日誌的正則 mysql慢查詢日誌

2021-10-17 18:30:34 字數 2263 閱讀 8622

新增慢查詢日誌:

第一種、修改my.cnf新增(薦):

log-slow-queries=/var/log/slowquery.log

long_query_time=1

重啟mysql

第二種、命令下新增:

set global long_query_time=1;

注:long_query_time的值:

5.2.1之前版本最小為1s,如果想支援ms需要打補丁;

mysql5.21+的版本最小值為0,可以設定0.5(500ms)。

檢視慢查詢時間值:

mysql> show variables like "%long%";

慢查詢分析mysqldumpslow

我們可以通過開啟log檔案檢視得知哪些sql執行效率低下

[root@localhost mysql]# more slow-query.log

# time: 081026 19:46:34

# user@host: root[root] @ localhost

# query_time: 11 lock_time: 0 rows_sent: 1 rows_examined: 6552961

select count(*) from t_user;

從日誌中,可以發現查詢時間超過5 秒的sql,而小於5秒的沒有出現在此日誌中。

如果慢查詢日誌中記錄內容很多,可以使用mysqldumpslow工具(mysql客戶端安裝自帶)來對慢查詢日誌進行分類彙總。mysqldumpslow對日誌檔案進行了分類彙總,顯示彙總後摘要結果。

進入log的存放目錄,執行

[root@mysql_data]#mysqldumpslow  slow-query.log

reading mysql slow query log from slow-query.log

count: 2 time=11.00s (22s) lock=0.00s (0s) rows=1.0 (2), root[root]@mysql

select count(n) from t_user;

mysqldumpslow命令

/path/mysqldumpslow -s c -t 10 /database/mysql/slow-query.log

這會輸出記錄次數最多的10條sql語句,其中:

-s, 是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;

-t, 是top n的意思,即為返回前面多少條的資料;

-g, 後邊可以寫乙個正則匹配模式,大小寫不敏感的;

例如:/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log

得到返回記錄集最多的10個查詢。

/path/mysqldumpslow -s t -t 10 -g 「left join」 /database/mysql/slow-log

得到按照時間排序的前10條裡面含有左連線的查詢語句。

使用mysqldumpslow命令可以非常明確的得到各種我們需要的查詢語句,對mysql查詢語句的監控、分析、優化是mysql優化非常重要的一步。開啟慢查詢日誌後,由於日誌記錄操作,在一定程度上會占用cpu資源影響mysql的效能,但是可以階段性開啟來定位效能瓶頸。

附:新增錯誤日誌

log-error=/var/log/mysql/logerror.log

不重啟服務,直接配置變數

mysql>set global log_slow_queries=on; 注這個和下面乙個有乙個為on,另乙個自動為   on

mysql>set global slow_query_log=on;

mysql> set global slow_query_log_file='/tmp/man.log';

mysql> set global long_query_time=3; #注這個和上面的不同,需要重新登陸才可以使用show看到生效。

注:slow_launch_time跟慢查詢日誌沒有任何關係, 它代表的是thread create的乙個閾值

修改配置檔案注意:

long_query_time=2

log-long-format

log-slow-queries=/data/mysqldata/slow-log.log #不能指定成slow_query_log=/data/mysqldata/slow-log.log 指定後重啟服務正常啟動,但是慢日誌不會開啟,名字為預設的主機名.log

mysql開啟慢查詢日誌 MySQL慢日誌體系建設

慢查詢日誌是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的sql語句,在很大程度上會影響資料庫整體的效能,是mysql優化的乙個重要方向。在58的雲db平台建設中,慢sql系統作為乙個非常重要功能模組,不僅是dba日常運維使用,我們也希望通過該功能可以協助開發人員更快速定位業...

mysql慢日誌時間 MySQL慢查詢日誌優化

一 慢查詢日誌概念 mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。long query time的預設值為10,意思是執行10s以上的語句。預設情況下,mys...

mysql慢日誌解析 mysql 慢日誌分析

啟用 slow log 有兩種啟用方式 1,在my.cnf 裡 通過 log slow queries file name 2,在mysqld程序啟動時,指定 log slow queries file name 選項 比較的五款常用工具 mysqldumpslow,mysqlsla,myprofi...