MySQL之查询截取分析
慢查询日志
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time
值的SQL,则会被记录到慢查询日志中。
具体指运行时间超过long_query_time
值的SQL,则会被记录到慢查询日志中。long_query_time
的默认值为10
,意思是运行10秒以上的语句。
由他来查看哪些 SQL 超出了我们的最大忍耐时间值,比如一条 sql 执行超过 5 秒钟,我们就算慢 SQL ,希望能收集超过 5 秒的 sql ,结合之前 explain 进行全面分析。
SHOW VARIABLES LIKE '%slow_query_log%';
查看是否开启。下面是日志文件。
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,
可以通过设置slow_query_log的值来开启set global slow_query_log=1
使用set global slow_query_log=1;开启了慢查询日志 只对当前数据库生效, 如果MySQL重启后则会失效。 要想一直生效在配置文件中配置。
那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?
查看当前多少秒算慢 SHOW VARIABLES LIKE 'long_query_time%';
设置慢的阙值时间 set long_query_time=0.1
当前连接有效
开启输入一条查询语句。
进入到我们的目录里查看日志文件
日志分析工具mysqldumpslow
在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow
- -a: 不将数字抽象成N,字符串抽象成S
- -s: 是表示按照何种方式排序;
- c: 访问次数
- l: 锁定时间
- r: 返回记录
- t: 查询时间
- al:平均锁定时间
- ar:平均返回记录数
- at:平均查询时间
- -t:即为返回前面多少条的数据
- -g:后边搭配一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 3 日志文件
SHOW PROCESSLIST
:查询所有用户正在干什么
如果出现不顺眼的kill [id]