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 05 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
MySQL分区路径子分区再分区
Apr 13 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面试题集锦
2012/03/08 PHP
PHP的PSR规范中文版
2013/09/28 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
jquery 常用操作方法
2010/01/28 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
简单的分页代码js实现
2016/05/17 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
详解vuex的简单使用
2018/03/12 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
python轻松实现代码编码格式转换
2015/03/26 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python更新所有已安装包的操作
2020/02/13 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
交通安全演讲稿
2014/01/07 职场文书
军训自我鉴定200字
2014/02/13 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书