MySQL優化篇 慢查詢日誌

2021-10-05 02:25:22 字數 3073 閱讀 7218

mysql的慢查詢日誌是mysql提供的一種日誌記錄,他用來記錄在mysql中響應時間超過閾值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。

具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是執行10秒以上的語句。

由他來檢視哪些sql抄錯了我們的最大忍耐時間值,比如一條sql執行超過5秒,我們就算慢sql,希望能收集超過5秒的sql,結合之前的explain進行全面分析。

(1)開啟設定

sql語句

描述備註

show variables like 「%slow_query_log%」;

檢視慢查詢日誌是否開啟

預設情況下slow_query_log的值為off,表示慢查詢日誌是禁用的

set global slow_query_log=1;

開啟慢查詢日誌

show variables like 「long_query_time%」;

檢視慢查詢設定的閾值

單位秒set long_query_time =1;

設定慢查詢閾值

單位秒

(2)永久生效

永久生效—需要修改配置檔案my.cnf中的[mysqld]下的配置

[mysqld]

slow_query_log=1

slow_query_log_file=/var/lib/mysql/htzw-slow.log

long_query_time=3

log_output=file

引數說明與注意事項

1、使用show variables like 'long_query_time』檢視是當前連線會話的變數值。因為long_query_time變數在global和session中都有,如果不加訪問域則使用預設的session訪問域,所以要想看到全域性的long_query_time變數需要用如下語句show global variables like 'long_query_time'2、show variables完整語法為:show [global|session] variables [like 『pattern』 | where expr]

3、log_output變數用於指定日誌的儲存方式,這個變數有兩個取值:file,table,預設取值為file。mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output=』file,table』

(3)執行查詢時間長的sql,開啟慢查詢日誌檢視

特殊說明

在進行sql優化的過程中,可以通過引數設定將未使用到索引的查詢當做慢查詢捕獲,具體可以通過如下變數設定:

系統變數log-queries-not-using-indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。如果調優的話,建議開啟這個選項。另外,開啟了這個引數,其實使用full index scan(索引全掃瞄)的sql也會被記錄到慢查詢日誌。

(1)檢視慢查詢記錄的條數

如果想查詢有多少條慢查詢記錄,可以使用這個系統狀態變數——slow_queries。

(2)檢視mysqldumpslow的幫助資訊

引數描述

-s表示按照何種方式排序

c訪問次數

l鎖定時間

r返回記錄

t查詢時間

al平均鎖定時間

ar平均返回記錄數

at平均查詢時間

-t即為返回前面多少條的資料

-g後邊搭配乙個正規表示式,大小寫不敏感

(3)檢視mysqldumpslow的幫助資訊

#得到返回記錄集最多的10個sql

mysqldumpslow -s r -t 10

/var/lib/mysql/htzw-slow.log

#得到訪問次數最多的10個sql

mysqldumpslow -s c -t 10

/var/lib/mysql/htzw-slow.log

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

mysqldumpslow -s t -t 10

-g "left join"

/var/lib/mysql/htzw-slow.log

#另外建議在使用這些命令時結合|和more使用,否則有可能出現爆屏情況

MySQL優化 慢查詢日誌

mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。開啟了慢查詢日...

MySQL慢日誌優化

慢日誌的效能問題 造成 i o 和 cpu 資源消耗 慢日誌通常會掃瞄大量非目的的資料,自然就會造成 i o 和 cpu 的資源消耗,影響到其他業務的正常使用,有可能因為單個慢 sql 就能拖慢整個資料庫的效能,而且這種慢 sql,在實際業務場景下,通常都是程式發起數個 sql 請求,通過 show...

mysql慢查詢日誌開啟與優化

mysql 開啟慢查詢日誌 show variables like slow query log 檢視慢查詢日誌是否開啟 show variables like slow query log file 檢視慢查詢日誌儲存位置 show variables like log queries not u...