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慢查询的坑
Apr 28 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 MySQL
MySQL 逻辑备份 into outfile
May 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中的时间处理
2006/10/09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
读jQuery之三(构建选择器)
2011/06/11 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
django ajax json的实例代码
2018/05/29 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Python类反射机制使用实例解析
2019/12/30 Python
python 伯努利分布详解
2020/02/25 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
民事和解协议书格式
2014/11/29 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python