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 07 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
MySQL大小写敏感的注意事项
May 24 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
关于MySQL中explain工具的使用
May 08 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
js实现Select头像选择实时预览代码
2015/08/17 Javascript
javascript常用函数(2)
2015/11/05 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
Vue程序调试的方法
2019/06/17 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
vue实现计步器功能
2019/11/01 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Python中的作用域规则详解
2015/01/30 Python
python处理大数字的方法
2015/05/27 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python实现音乐下载器
2018/04/15 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
中学门卫岗位职责
2013/12/26 职场文书
运动会广播稿150字
2014/02/19 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
竞聘书的秘诀
2019/04/02 职场文书
PHP命令行与定时任务
2021/04/01 PHP
Python3.10的一些新特性原理分析
2021/09/15 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL