MySQL性能分析案例-慢查询

2321 篇文章 33 订阅
1785 篇文章 17 订阅

1、开启慢查询日志

查看慢查询日志配置信息:show variables like ‘slow_query%’;

图片

参数说明:

slow_query_log: 是否开启慢查询日志,ON:是;OFF;否

slow_query_log_file: 慢查询日志路径

开启慢查询日志:

1set global slow_query_log = on;

设置慢查询日志路径:(如果有需要可更改log路径)

1set global slow_query_log_file = "/var/lib/mysql/slow_query.log";

注:show [global|session] variables; 或 set [global|session] variable_name = val; 语句中,global指全局级别,session指当前会话级别,不选则默认为session。当重启mysql服务之后,global和session配置信息都会失效,按my.ini重新初始化。此处slow_query_log是全局生效的配置,应当使用global,否则可能报错:1229 - Variable ‘slow_query_log’ is a GLOBAL variable and should be set with SET GLOBAL。设置变量值时,ON/on/1,OFF/off/0效果一致。

2、设定慢查询时长

查看慢查询语句执行时间:show global variables like ‘long_query_time’;

图片

mysql慢查询的sql语句执行时长默认是10s, 超过10s就认为出现了慢查询,这个尺度可以根据实际业务自定义。

设置慢查询时长:

1set global long_query_time = 2;

执行时长超过2s就会被记录到slow_query_log_file

3、开启未使用索引sql语句记录

查看未使用索引sql语句配置项:show global variables like ‘log_queries_not_using_indexes’;;

在这里插入图片描述

开启记录:

1set global log_queries_not_using_indexes = on;

如此一来,未使用索引的sql语句就会被记录到slow_query_log_file

注意:long_query_time 或 log_queries_not_using_indexes 一项成立,即会写入慢查询日志。

也可以在mysql配置文件中进行设置:

1[mysqld]
2slow_query_log = ON;
3long_query_time = 2;
4log_queries_not_using_indexes = ON;

4、分析慢查询日志:

查看slow_query_log_file指定的文件,

图片

Time:sql执行的时间

User@Host:执行sql的客户端

ID:执行sql的线程id

Query_time:执行sql耗时

Lock_time:执行sql期间锁定时间

Rows_sent:返回的记录行数

Rows_examined:检索的行数

也可以使用官方提供的工具mysqldumpslow来查看日志,可以帮助去重,进行一些合并统计

图片

然后根据这些慢查询sql语句进行相关优化调试。

附:在当前命令行中快捷查看慢查询发生的次数:

1show status like 'slow_queries';

图片

注:mysql5.7以下版本只设置系统变量long_query_time值,系统状态slow_queries便会记录,不开启slow_query_log的话不会将慢查询语句记录到日志中;而5.7版本在设置long_query_time的同时还要开启慢查询日志,设置系统变量(全局)slow_query_log为on(或1),然后slow_queries才会记录,每次关闭会话,slow_queries自动清零,但slow_query_log_file指定的日志文件正常记录。

最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值