mysql的慢語句 MySQL中慢語句如何記錄?

2021-10-17 21:31:41 字數 2324 閱讀 4671

實際工作中經常會遇到資料庫操作突然變慢的情況,但是檢查了各種硬體設施以及網路監控後發現都沒有什麼問題;這時候就要從資料庫入手了,而慢sql是我們工作中經常會遇到的影響查詢效能的情況。本文將介紹如何在mysql中獲取慢sql。

一、資料庫中通過日誌記錄慢sql的幾個配置項

1.slow_query_log 該配置用於配置是否捕獲執行時間超過一定數值的sql語句,預設值為off

查詢資料的配置方式為

show variables like 'slow_query_log';

開啟該配置的方式有兩種

#第一種為執行設定命令

set global slow_query_log='on';

#第二種為修改 my.cnf 中的配置

slow_query_log = 1 #開啟慢查詢

2.long_query_time 當sql執行時間超過該配置設定值後將被記錄,該值單位為秒設定時支援設定為小數,預設值為10秒

查詢資料的配置方式為

show variables like 'long_query_time';

開啟該配置的方式同樣也是有兩種

#第一種為執行設定命令

set global long_query_time=5;

#第二種為修改 my.cnf 中的配置

long_query_time = 1 #超過的時間為1s

3.slow_query_log_file 超時時間記錄的檔案路徑

查詢配置的方式為

show variables like 'slow_query_log_file';

開啟配置的方式為

#第一種為執行設定命令

set global slow_query_log_file='/var/***.log';

#第二種為修改 my.cnf 中的配置

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

4.log_queries_not_using_indexes 當設定為 on 時,可以捕捉到所有未使用索引的sql語句,預設值為off

查詢資料的配置方式為

show variables like 'log_queries_not_using_indexes';

開啟配置的方式為

#第一種為執行設定命令

set global log_queries_not_using_indexes ='on';

#第二種為修改 my.cnf 中的配置

log-queries-not-using-indexes = 1 #開啟慢查詢

二、日誌內容分析

當開啟了慢sql日誌後,可以在配置好的日誌輸出位置看到慢sql的記錄,檢視內容的方式有兩種

1.直接檢視日誌內容,我們可以通過直接開啟檔案的方式檢視日誌內容;但是使用此種方式就需要我們自行對日誌記錄的內容進行分析。日誌記錄結果如下:

# time: 201110 23:40:02

# user@host: data_base[datausername_rw] @ [ip] id: 55520890

# query_time: 0.530398 lock_time: 0.000042 rows_sent: 1 rows_examined: 2021690

set timestamp=1605022802;

select count(1) from table_name where 1 = 1;

2.使用mysql自帶的 mysqldumpslow 命令

#常用引數說明

-s 後面接下面的引數表示 mysqldumpslow 結果顯示的順序!

c query執行的次數

t sql執行的時間

l lock鎖表的時間

r sql返回的行數

#ac,at,al,ar,表示倒序排列

-t,是top n,即為返回前面n條資料

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

#語句示例

mysqldumpslow -s t -t 2 /opt/mysql/data/slowquery.log #顯示執行時間最長的前兩個sql

mysqldumpslow -s c -t 2 /opt/mysql/data/slowquery.log #顯示次數最多的前兩個sql

三、使用 show processlist 命令實時查詢執行語句

1.show processlist命令可以將當前正在正在執行的執行緒進行列印,字段說明如下

2.state 列介紹,state只是語句執行過程中的某乙個狀態;比如執行查詢時,可能需要經過copying to tmp table,sorting result,sending data等狀態才可以完成。狀態的值主要有以下幾種:

Mysql慢查詢語句分析

1.show full processlist 解釋 id 連線id,可以使用kill 連線id的方式關閉連線 user 當前使用者 host 當前連線客戶端 db 連線的資料庫 command 顯示當前連線的當前執行的狀態,sleep query connect time 持續時間 state s...

查詢MySQL中查詢慢的SQL語句的方法

1 通過查詢日誌 1 windows下開啟mysql慢查詢 mysql在windows系統中的配置檔案一般是是my.ini找到 mysqld 下面加上 如下 log slow queries f mysql log mysqlslowquery。log long query time 2 2 lin...

mysql 慢查詢 MySQL慢查詢

一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...