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中的布尔值,怎么存储false或true
Jun 04 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Nov 27 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
了解MySQL查询语句执行过程(5大组件)
Aug 14 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 MySQL
详解MySQL的内连接和外连接
May 08 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 mysql数据库操作分页类
2008/06/04 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python实现计算器功能
2019/10/31 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
美国智能家居专家:tink
2019/06/04 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
数学专业推荐信范文
2013/11/21 职场文书
高三历史教学反思
2014/01/09 职场文书
创建文明城市标语
2014/06/16 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
工作后的感想
2015/08/07 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
redis数据结构之压缩列表
2022/03/21 Redis