Mysql效率优化定位较低sql的两种方式


Posted in MySQL onMay 26, 2021

关于mysql效率优化一般通过以下两种方式定位执行效率较低的sql语句。

通过慢查询日志定位那些执行效率较低的 SQL 语句,用 --log-slow-queries[=file_name] 选项启动时, mysqld 会 写一个包含所有执行时间超过 long_query_time 秒的 SQL 语句的日志文件,通过查看这个日志文件定位效率较低的 SQL 。

慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的 执行情况,同时对一些锁表操作进行优化。

下面我们举例说明一下,如何通过慢查询日志定位执行效率底的 SQL 语句:

开启慢查询日志 , 配置样例:

log-slow-queries

在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效。慢查询 日志将写入参数 DATADIR (数据目录)指定的路径下,默认文件名是 host_name-slow.log 。

和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。下例中演示了慢查询日志的设置和读取过程。

( 1 )首先查询一下 long_query_time 的值 。

mysql> show variables like 'long%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 10 |
+-----------------+-------+
1 row in set (0.00 sec)

( 2 )为了方便测试,将修改慢查询时间为 5 秒。

mysql> set long_query_time=5;
Query OK, 0 rows affected (0.02 sec)

( 3 )依次执行下面两个查询语句。

第一个查询因为查询时间低于 5 秒而不会出现在慢查询日志中:

mysql> select count(*) from order2008;
+----------+
| count(*) |
+----------+
| 208 |
+----------+
1 row in set (0.00 sec)

第二个查询因为查询时间大于 5 秒而应该出现在慢查询日志中:

mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
| 6552961 |
+----------+
1 row in set (11.07 sec)

( 4 )查看慢查询日志。

[root@localhost mysql]# more localhost-slow.log
# Time: 081026 19:46:34
# User@Host: root[root] @ localhost []
# Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961
select count(*) from t_user;

从上面日志中,可以发现查询时间超过 5 秒的 SQL ,而小于 5 秒的则没有出现在此日志中。
如果慢查询日志中记录内容很多,可以使用 mysqldumpslow 工具( MySQL 客户端安装自带)来对慢查询日志进行分类汇总。下例中对日志文件 mysql_master-slow.log 进行了分类汇总,只显示汇总后摘要结果:

[root@mysql_master mysql_data]# mysqldumpslow mysql_master-slow.log
Reading mysql slow query log from mysql_master-slow.log
Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_master
select count(N) from t_user;

对于 SQL 文本完全一致,只是变量不同的语句, mysqldumpslow 将会自动视为同一个语句进行统计,变量值用 N 来代替。这个统计结果将大大增加用户阅读慢查询日志的效率,并迅速定位系统的 SQL 瓶颈。

注意:慢查询日志对于我们发现应用中有性能问题的 SQL 很有帮助,建议正常情况下,打开此日志并经常查看分析。

以上是给大家介绍的Mysql效率优化定位较低sql的两种方式 ,希望以上所述对大家有所帮助。

MySQL 相关文章推荐
MySQL infobright的安装步骤
Apr 07 MySQL
MySQL Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
详解MySQL 用户权限管理
Apr 20 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 #MySQL
MySQL查看表和清空表的常用命令总结
May 26 #MySQL
MySQL中distinct与group by之间的性能进行比较
MySQL中distinct和count(*)的使用方法比较
May 26 #MySQL
MySQL中出现乱码问题的终极解决宝典
如何设计高效合理的MySQL查询语句
May 26 #MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 #MySQL
You might like
PHP 程序员应该使用的10个组件
2009/10/31 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js和php如何获取当前url的内容
2013/09/22 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python运算符重载用法实例分析
2015/06/01 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
高级护理实习生自荐信
2013/09/28 职场文书
应届医学毕业生求职信分享
2013/12/02 职场文书
英文简历自荐信范文
2013/12/11 职场文书
食堂个人先进事迹
2014/01/22 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
安全教育感言
2014/03/04 职场文书
作风建设整改方案
2014/10/27 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers