当前位置: 首页 > article >正文

mysql定位慢查询以及分析原因

看本篇文章之前建议先了解索引,索引分类,和回表查询的概念

导致慢查询的原因

1. 聚合查询

2. 多表查询

3. 表数据量过大查询

4. 深度分页查询

慢查询的现象就是页面加载过慢、接口压测响应时间过长,超过1s

如何定位慢查询

方案一

方案二

        MySQL自带慢日志,这里主要讲这个,我的是8版本,你如果是5版本可能本篇文章帮助不大。

mysql中查询慢日志是否开启

 show variables like 'slow_query_log'; 

        mysql装在windows的话修改系统的my.ini配置文件,在这里能找到这个文件: C:\ProgramData\MySQL\MySQL Server 8.0,注意:ProgramData是隐藏起来的。

        文件修改好是这样的。你只需要改第一行和第三行。第一行是慢日志开关,1为开,0为关。 第三行是慢日志记录时间(单位秒),sql执行超过这个时间就会被记录到慢日志文件

        圈起来第二行是让你注意,慢查询日志不叫CCC-slow.log,千万注意,要想知道在哪,在mysql里面执行下面代码块语句。

show variables like '%slow_query_log%';  

现在我执行一条语句,执行时间为15.21s,超过了2s

此时慢日志里面就会记录该条语句信息。

 如何分析慢查询原因

        导致慢的有下面四个原因,现在我们定位到了一条慢查询,如何分析导致慢的原因呢? 有一招叫做查看sql执行计划

        这里来看个前置知识,慢查询聚合索引的解决办法是建立临时表,多表查询是优化sql,尽量别用多表查询,放业务里面查多次。表数据量过大用索引解决,深度分页查询后续再说。

explain加在sql命令前面就可以查看该sql的执行计划,exlain是mysql自带的分析工具。 来看一个新sql的执行计划,这是个根据条件查询语句,可以根据索引去优化。

   你需要关注字段如下

1. “possible_keys”: 可能用到的索引。

2. "key": 实际用到的索引

3. “key_len”:  索引占用的大小 

4. “extra”: 额外的优化建议,证明有优化空间,例如下图

5. “type”: 这条sql的连接的类型,性能由好到差为NULL、system、const、eq_ref、ref、range、index、all。 接下来我详细给你介绍一下这几个值的含义。

null: 是我们的sql没使用到表,这个很少见,无需关注。

system: 是指查询的是mysql系统中的表,开发也不常用。

const:(常用),根据主键查询。

eq_ref: 主键索引查询或唯一索引查询

ref: 根据索引查询,和eq_ref不一样,是其他索引,可以查出多条数据。例如select * from user where name  = ”张三“;有可能多个人叫张三。

range:  范围查询。

index: 全索引查询,索引树扫描,效率不高,一般都是需要优化的。

all:  不走索引,效率最低,全盘扫描。需要优化。

慢查询分析总结


http://www.kler.cn/a/413532.html

相关文章:

  • 搭建AD域服务器
  • 【jmeter】服务器使用jmeter压力测试(从安装到简单压测示例)
  • 深入解析下oracle char和varchar2底层存储方式
  • 使用Python实现自动化邮件通知:当长时程序运行结束时
  • Linux环境变量(添加环境变量、修改系统环境变量、内建命令和非内建命令)
  • 51单片机从入门到精通:理论与实践指南入门篇(三)
  • ArraList和LinkedList区别
  • aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用
  • [Unity] 【游戏开发】角色设计3-如何为角色实现响应输入的控制器
  • 数据结构——用链表实现栈和队列
  • git分支管理:release分支内容重置为master
  • 零基础学安全--HTML
  • vue3+antd注册全局v-loading指令
  • CentOS上如何离线批量自动化部署zabbix 7.0版本客户端
  • Github 基本使用学习笔记
  • Sqlalchemy学习
  • java全栈day09--Maven基础知识补充
  • jmeter使用方法简介以及一个自动测试解决方案
  • 构建英语知识网站:Spring Boot框架解析
  • 摄像头原始数据读取——V4L2(mmap模式,V4L2_MEMORY_MMAP)