SQL慢查询
通过日志定位到慢查询SQL
show variables like '%slow_query_log';
// 这是个全局参数
set global slow_query_log='ON';//开启慢查询日志
// 查看执行时间多长的SQL 可以视为慢查询
show variables like '%long_query_time%';
// 设置慢查询时间->查询执行了多久时间后记录日志
set global long_query_time = 3;
// 查看日志存储路径
show variables like 'slow_query_log%';
生产环境建议开启慢查询日志,根据需要设置慢查询时间。
查看日志存储位置,可以监控这个文件。
慢查询日志格式
Query_time:语句执行时间(真实执行时间 + 锁定时间)
Lock_time:锁定时间
Rows_sent:发送给客户端的数据行
Rows_exaimned:扫描的行数
后面几行就是sql命令,这里用sleep做个测试
注意,慢查询SQL指的是SQL真实执行的时间,不包含锁定的时间,比如事务1修改row1,事务2因等待操作row1而锁定等待的时间就不包含
mysqldumpslow命令
作用:根据条件dump出慢查询日志
-s:采用 order 排序的方式,排序方式可以有以下几种。
分别是 c(访问次数)、t(查询时间)、l(锁定时间)、r(返回记录)、ac(平均查询次数)、
al(平均锁定时间)、ar(平均返回记录数)和 at(平均查询时间)。其中 at 为默认排序方式。
-t:返回前 N 条数据
mysqldumpslow -s t -t 1;