慢查询日志
什么是慢查询日志
- MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具
体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
- 运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为
10,意思是运行10秒以上的语句。
- 可以查看哪些SQL超出了我们的最大忍耐时间值,结合之前explain进行全面分析。
怎么用慢查询日志
默认情况下,MySQL 数据库没有开启慢查询日志,需要我们手动来设置这个参数。 一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。 慢查询日志支持将日志记录写入文件。
慢查询相关语句:
语句 作用/描述 SHOW VARIABLES LIKE '%slow_query_log%' 查看慢查询日志是否开启,默认off,
禁用,和日志的文件路径
SET GLOBAL slow_query_log=1 开启慢查询日志功能,重启就失效了,
要永久生效就要修改配置文件
SHOW VARIABLES LIKE 'long_query_time' 查看慢查询阈值(单位秒) SET GLOBAL long_query_time=5 设置慢查询阈值(单位秒)
修改完要重开链接,或者新开会话才能使用查询命令查询到
日志分析工具 mysqldumpslow
查看mysqldumpslow 帮助信息
mysqldumpslow --help
参数 作用 -s 表示按照什么方式牌排序 c 访问次数 l 锁定时间 r 返回记录 t 查询时间 al 平均锁定时间 ar
平均返回记录 at 平均查询时间 -t 返回前面多少条记录
-g 后边跟个正则表达式匹配模式,大小写不敏感 得到返回记录集最多的 10 个 SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log
得到访问次数最多的 10 个 SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log
得到按照时间排序的前 10 条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log
另外建议在使用这些命令时结合 | 和 more 使用 ,否则有可能出现爆屏情况
mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more
mysql 进程列表
- 查看mysql进程列表SHOW PROCESSLIST
- 杀死对应进程:kill 进程号
show profile
Mysql从5.0.3版本开始增加了对show profiles和show profile的支持,show profile能够帮我们了解在sql语句执行过程中时间耗费在了哪些地方
//TODO
全局查询日志