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 EXPLAIN输出列的详细解释
May 12 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
MySQL 数据表操作
May 04 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
php+highchats生成动态统计图
2014/05/21 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript