MySQL慢查询优化解决问题


Posted in MySQL onMarch 17, 2022

1.  MySQL慢查询介绍

  MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表

慢查询日志相关参数:

MySQL 慢查询的相关参数解释:

  • slow_query_log    :是否开启慢查询日志,1表示开启,0表示关闭。
  • log-slow-queries  :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。
  • log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
  • log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

2.发现问题(主动/被动)

问题点:数据库查询过程中速度过慢的SQL语句

主动:数据库默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的

mysql> show variables  like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | OFF                                           |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)
 
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.09 sec)
 
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | ON                                            |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)

被动:用户在使用程序时候告知页面反应慢

3.找到原因-对症下药

原因点:没有加索引、索引失效、SQL极度复杂、高并发

1.表结构设计时没有索引导致

2.SQL语句导致索引失效

索引失效7字口诀:

  • 模:模糊查询LIKE以%开头
  • 型:数据类型错误
  • 数:对索引字段使用内部函数
  • 空:索引列是NULL
  • 运:索引列进行四则运算
  • 最:复合索引不按索引列最左开始查找
  • 快:全表查找预计比索引更快

3.SQL极度复杂10张以上表联合查询

  • 优化表结构和程序

4.高并发时段导致等待

  • 在程序和数据库之间加入缓存

Hole yor life get everything if you never give up.

到此这篇关于MySQL慢查询优化解决问题的文章就介绍到这了,更多相关MySQL慢查询优化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql知识点整理
Apr 05 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php三元运算符知识汇总
2015/07/02 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
利用JS实现数字增长
2016/07/28 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python如何处理程序无法打开
2020/06/16 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
先进基层党组织材料
2014/12/25 职场文书
2015中秋祝酒词
2015/08/12 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
python实现剪贴板的操作
2021/07/01 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python