当前位置:网站首页>MySQL优化之慢日志查询
MySQL优化之慢日志查询
2022-07-31 04:47:00 【jiey0407】
文章目录
一、慢查询日志概念
对于SQL和索引的优化问题,我们会使用explain去分析SQL语句。但是真正的企业级项目有成千上万条SQL,我们不可能从头开始一条一条explain去分析。我们从什么地方可以获取那些运行时间长,耗性能的SQL??
我们可以打开慢查询日志:
根据具体的业务和并发量来预估一个时间上限(20ms、100ms),设置好后开启业务,压测后打开慢查询日志,就会看到超过执行时间的SQL,然后使用explain分析这些耗时的SQL语句
步骤如下:
- 打开慢查询日志开关
slow_query_log
- 设置合理的、业务可以接受的慢查询时间上限
- 压测执行各种业务
- 查看慢查询日志,找出所有执行耗时的SQL语句
- 用explain分析这些耗时的SQL语句,从而针对性优化
MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,那么这些SQL就会被记录在慢查询日志当中,然后我们通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下,是没有使用到索引?还是索引本身创建的有问题?或者是索引使用到了,但是由于表的数据量太大,花费的时间就是很长,那么此时我们可以把表分成多个小表等。
慢查询日志相关的参数如下所示:
(MySQL定义的很多的全局的开关,都是在全局变量中存储,可以用show/set variables
查看或者设置全局变量的值)
慢查询日志开关默认是关闭的
慢查询日志的路径:默认在/var/lib/mysql/
下
慢查询日志记录了包含所有执行时间超过参数 long_query_time(单位:秒)所设置值的 SQL语句的日志,在MySQL上用命令可以查看,如下:
这个值是可以修改的:
二、慢查询日志实践
1. 打开慢查询日志开关slow_query_log
在打开慢查询日志开关的时候,报错表示slow_query_log是一个global的变量(也有只影响当前session的变量,如:long_query_time 、profiling),修改后会影响所有的session,即影响所有正在访问当前MySQL server的客户端。
打开慢查询日志开关成功!
2. 设置合理的、业务可以接受的慢查询时间上限long_query_time
查看另一个session
发现还是默认的10s,故long_query_time只影响当前session
3. 压测执行各种业务
已经超过我们设置的long_query_time=0.1s
4. 查看慢查询日志
路径:/var/lib/mysql/
5. 用explain分析这些耗时的SQL语句,从而针对性优化
做了整表的搜索,把主键索引树整个扫了一遍。
我们应该给password添加索引,然后记得password是字符串格式,因为如果涉及类型转换是用不了索引的
三、show profiles查看sql具体的运行时间
MySQL一般只显示小数点后两位的时间
打开profiling开关,显示更详细的时间
没有报错,说明profiling变量只影响当前session
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- [R language] [3] apply, tapply, lapply, sapply, mapply and par function related parameters
- Gaussian distribution and its maximum likelihood estimation
- 数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开
- WeChat applet uses cloud functions to update and add cloud database nested array elements
- Blockbuster | foundation for platinum, gold, silver gave nameboards donors
- 【C语言】操作符详解
- ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
- STM32HAL library modifies Hal_Delay to us-level delay
- MySQL模糊查询可以使用INSTR替代LIKE
- ENSP, VLAN division, static routing, comprehensive configuration of Layer 3 switches
猜你喜欢
MySQL database backup
Unity Fighter
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
Doris学习笔记之监控
矩池云快速安装torch-sparse、torch-geometric等包
VScode+ESP32 quickly install ESP-IDF plugin
Hand in hand to realize the picture preview plug-in (3)
C language confession code?
三子棋的代码实现
随机推荐
递归实现汉诺塔问题
The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
The Vue project connects to the MySQL database through node and implements addition, deletion, modification and query operations
[Linear Neural Network] softmax regression
open failed: EACCES (Permission denied)
mysql基础知识(二)
Heavyweight | The Open Atomic School Source Line activity was officially launched
马斯克对话“虚拟版”马斯克,脑机交互技术离我们有多远
C language confession code?
【debug锦集】Expected input batch_size (1) to match target batch_size (0)
three.js make 3D photo album
SOLVED: After accidentally uninstalling pip (two ways to manually install pip)
Basic knowledge of mysql (2)
论治理与创新 | 2022开放原子全球开源峰会OpenAnolis分论坛圆满召开
Industry-university-research application to build an open source talent ecosystem | 2022 Open Atom Global Open Source Summit Education Sub-Forum was successfully held
ERP Production Operation Control Kingdee
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
HCIP第十天_BGP路由汇总实验
MySQL基础操作