mysql學(xué)習(xí)-----慢SQL日志開啟與查詢分析

一、慢SQL日志開啟(臨時(shí)開啟)

1、慢SQL日志開啟狀態(tài)查詢
# 查看慢sql是否開啟
show VARIABLES like 'slow_query_log';
慢SQL日志開啟查詢結(jié)果.png

如果結(jié)果為OFF狀態(tài)則需要設(shè)置為ON狀態(tài)

# 開啟慢sql日志
set global slow_query_log='ON';
2、慢SQL收集時(shí)間閾值
# 慢sql收集閾值查詢(單位秒)
show VARIABLES like 'long_query_time';
.png

修改閾值

# 慢sql收集閾值修改(需要重啟數(shù)據(jù)庫才能生效)
set global long_query_time = 2;
3、慢sql日志文件保存位置
# 查看慢sql查詢?nèi)罩疚募4嫖恢?show VARIABLES like 'slow_query_log_file';
image.png
# 設(shè)置慢sql查詢?nèi)罩疚募4嫖恢?set GLOBAL slow_query_log_file='/data/local/mysql/log/mysql-slow.log';

二、慢SQL日志開啟(配置文件開啟)

在配置文件my.cnf中添加

[mysqld]
# 開啟慢SQL查詢?nèi)罩?slow_query_log=1
# 慢SQL日志文件的位置
slow_query_log_file=/data/server/data/mysql-slow-2022-07-09.log
# 慢SQL的時(shí)間閾值。超過long_query_time設(shè)定的,就會(huì)記錄到/data/server/data/mysql-slow.log日志文件中
long_query_time=3
# sq執(zhí)行中Rows_examined掃描行數(shù)必須大于500才會(huì)記錄
min_examined_row_limit =500
# 沒有使用索引的SQL或雖然使用了索引但仍然遍歷了所有記錄的SQL,記錄到慢查詢?nèi)罩?log-queries-not-using-indexes
# 沒有使用索引的SQL每分鐘記錄的次數(shù) 即:為了節(jié)省空間 同一條SQL語句在一分鐘內(nèi)最多只記錄10次
log_throttle_queries_not_using_indexes =10
# 記錄執(zhí)行緩慢的管理SQL,例如alter table|analyze table|c(diǎn)heck table|c(diǎn)reate index|drop index|optimize table|repair table 等命令
log-slow-admin-statements = table
# 記錄從庫上執(zhí)行的慢查詢語句
log_slow_slave_statements
# 記錄慢查詢?nèi)罩镜母袷?FILE|TABLE|NONE 默認(rèn)是文件格式 TABLE 是以表的格式 不建議用table
log_output = file
# 慢日志記錄的時(shí)間格式 采用系統(tǒng)的時(shí)間
log_timestamps = 'system'

三、慢SQL日志分析

image.png
# Time: 2022-07-11T09:44:52.481135Z
# User@Host: devdb[devdb] @  [192.168.121.251]  Id: 2099943
# Query_time: 8.165586  Lock_time: 0.000027 Rows_sent: 0  Rows_examined: 171249
SET timestamp=1657532692;
DELETE FROM `order_202207`;

1、# Time: 2022-07-11T09:44:52.481135Z -------sql執(zhí)行的開始時(shí)間
2、# User@Host: devdb[devdb] @ [192.168.121.251] Id: 2099943 -------執(zhí)行sql的主機(jī)信息
3、# Query_time: 8.165586 Lock_time: 0.000027 Rows_sent: 0 Rows_examined: 171249-------SQL的執(zhí)行信息:

  • Query_time:SQL的查詢時(shí)間
  • Lock_time:鎖定時(shí)間
  • Rows_sent:所發(fā)送的行數(shù)
  • Rows_examined:掃描的行數(shù)

4、SET timestamp=1657532692;-------SQL執(zhí)行時(shí)間
5、DELETE FROM order_202207; -------SQL的執(zhí)行內(nèi)容

四、使用mysql自帶的日志分析工具命令分析

./mysqldumpslow -t 3 /data/local/mysql/data/NewMiniPro03-slow.log

五、特大日志文件讀取與刪除

可以使用tail輸出日志文件最后幾行到新文件

tail -1000f slow-2022-07-11.log > tmp.log

使用rm刪除日志文件

# 命令窗口執(zhí)行 注:刪除前先備份(mv mysql-slow.log slow-2022-07-11.log)
 flush slow logs
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容