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 常见存储引擎的优劣
Jun 02 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
一文简单了解MySQL前缀索引
Apr 03 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
第三节--定义一个类
2006/11/16 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
js解决movebox移动问题
2016/03/29 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
JS实现鼠标移动拖尾
2020/12/27 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
使用python编写监听端
2018/04/12 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python读写压缩文件的方法
2020/07/30 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
护士找工作求职信
2014/07/02 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
签字仪式主持词
2015/07/03 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS