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 update set 和 and的区别
May 08 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
MySQL学习之基础操作总结
Mar 19 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
DQL数据查询语句使用示例
Dec 24 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
php 常用类整理
2009/12/23 PHP
php生成图片缩略图的方法
2015/04/07 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
js创建数组的简单方法
2016/07/27 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
Python struct.unpack
2008/09/06 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
python unittest实现api自动化测试
2018/04/04 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
深入了解Python 变量作用域
2020/07/24 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
益模软件Java笔试题
2012/03/27 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
电子商务专员岗位职责
2013/12/11 职场文书
联谊活动策划书
2014/01/26 职场文书
节能环保演讲稿
2014/08/28 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年商场工作总结
2014/11/22 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
一条 SQL 语句执行过程
2022/03/17 MySQL