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 28 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
Mysql 用户权限管理实现
May 25 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
MySQL数据库⾼可⽤HA实现小结
Jan 22 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
mysql全面解析json/数组
Jul 07 MySQL
MySQL常用慢查询分析工具详解
Aug 14 MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
You might like
php 文章调用类代码
2011/08/11 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
php格式化日期实例分析
2014/11/12 PHP
PHP生成树的方法
2015/07/28 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python占用的内存优化教程
2019/07/28 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
yy婚礼主持词
2014/03/14 职场文书
优秀员工演讲稿
2014/05/19 职场文书
学校交通安全责任书
2014/08/25 职场文书
教师党员自我评价范文
2015/03/04 职场文书
幼儿园辞职信
2015/05/13 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript