mysql学习-----慢SQL日志开启与查询分析

一、慢SQL日志开启(临时开启)

1、慢SQL日志开启状态查询
# 查看慢sql是否开启
show VARIABLES like 'slow_query_log';
慢SQL日志开启查询结果.png

如果结果为OFF状态则需要设置为ON状态

# 开启慢sql日志
set global slow_query_log='ON';
2、慢SQL收集时间阈值
# 慢sql收集阈值查询(单位秒)
show VARIABLES like 'long_query_time';
.png

修改阈值

# 慢sql收集阈值修改(需要重启数据库才能生效)
set global long_query_time = 2;
3、慢sql日志文件保存位置
# 查看慢sql查询日志文件保存位置
show VARIABLES like 'slow_query_log_file';
image.png
# 设置慢sql查询日志文件保存位置
set GLOBAL slow_query_log_file='/data/local/mysql/log/mysql-slow.log';

二、慢SQL日志开启(配置文件开启)

在配置文件my.cnf中添加

[mysqld]
# 开启慢SQL查询日志
slow_query_log=1
# 慢SQL日志文件的位置
slow_query_log_file=/data/server/data/mysql-slow-2022-07-09.log
# 慢SQL的时间阈值。超过long_query_time设定的,就会记录到/data/server/data/mysql-slow.log日志文件中
long_query_time=3
# sq执行中Rows_examined扫描行数必须大于500才会记录
min_examined_row_limit =500
# 没有使用索引的SQL或虽然使用了索引但仍然遍历了所有记录的SQL,记录到慢查询日志
log-queries-not-using-indexes
# 没有使用索引的SQL每分钟记录的次数 即:为了节省空间 同一条SQL语句在一分钟内最多只记录10次
log_throttle_queries_not_using_indexes =10
# 记录执行缓慢的管理SQL,例如alter table|analyze table|check table|create index|drop index|optimize table|repair table 等命令
log-slow-admin-statements = table
# 记录从库上执行的慢查询语句
log_slow_slave_statements
# 记录慢查询日志的格式 FILE|TABLE|NONE 默认是文件格式 TABLE 是以表的格式 不建议用table
log_output = file
# 慢日志记录的时间格式 采用系统的时间
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执行的开始时间
2、# User@Host: devdb[devdb] @ [192.168.121.251] Id: 2099943 -------执行sql的主机信息
3、# Query_time: 8.165586 Lock_time: 0.000027 Rows_sent: 0 Rows_examined: 171249-------SQL的执行信息:

  • Query_time:SQL的查询时间
  • Lock_time:锁定时间
  • Rows_sent:所发送的行数
  • Rows_examined:扫描的行数

4、SET timestamp=1657532692;-------SQL执行时间
5、DELETE FROM order_202207; -------SQL的执行内容

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

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

五、特大日志文件读取与删除

可以使用tail输出日志文件最后几行到新文件

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

使用rm删除日志文件

# 命令窗口执行 注:删除前先备份(mv mysql-slow.log slow-2022-07-11.log)
 flush slow logs

你可能感兴趣的:(mysql学习-----慢SQL日志开启与查询分析)