一署鸡、慢SQL日志開啟(臨時開啟)
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收集時間閾值
# 慢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的時間閾值嘀韧。超過long_query_time設(shè)定的,就會記錄到/data/server/data/mysql-slow.log日志文件中
long_query_time=3
# sq執(zhí)行中Rows_examined掃描行數(shù)必須大于500才會記錄
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|check table|create index|drop index|optimize table|repair table 等命令
log-slow-admin-statements = table
# 記錄從庫上執(zhí)行的慢查詢語句
log_slow_slave_statements
# 記錄慢查詢?nèi)罩镜母袷?FILE|TABLE|NONE 默認是文件格式 TABLE 是以表的格式 不建議用table
log_output = file
# 慢日志記錄的時間格式 采用系統(tǒng)的時間
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í)行的開始時間
2谊却、# User@Host: devdb[devdb] @ [192.168.121.251] Id: 2099943 -------執(zhí)行sql的主機信息
3、# Query_time: 8.165586 Lock_time: 0.000027 Rows_sent: 0 Rows_examined: 171249-------SQL的執(zhí)行信息:
- Query_time:SQL的查詢時間
- Lock_time:鎖定時間
- Rows_sent:所發(fā)送的行數(shù)
- Rows_examined:掃描的行數(shù)
4哑芹、SET timestamp=1657532692;-------SQL執(zhí)行時間
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