轻松掌握mysql慢查询定位与优化知识点

news2024/11/27 4:36:15

在这里插入图片描述
在这里插入图片描述

1、利用工具定位慢sql

1、运维工具Skywalking
1、定位到慢接口

在这里插入图片描述

2、追踪慢sql的执行情况

在这里插入图片描述

2、利用MySQL的日志定位慢sql

在这里插入图片描述

在调式阶段才开启慢日志的查询,因为会损耗一些性能。

3、分析是否正确使用了索引

当我们已经定位到具体哪个sql较慢时,就可以开始分析导致sql慢的原因了。可以通过sql执行计划分析、

1、通过执行计划分析索引使用情况

通过执行计划可分析聚合查询、多表查询、表数据量过大查询。

在这里插入图片描述

重点关注如下参数:

  • possible_keys可能使用到的索引

  • key实际命中的索引

  • key_len实际命中的索引占用的大小

  • Extra 额外的优化建议

  • type 表示sql的连接类型,性能由好到差为NULL、system、const、eq_ref、ref、range、index、all。

    • NULL:表示这条sql执行中没有用到表,可以不用太关注
    • system:查询mysql内置的表,在开发中也用的不多
    • const: 根据主键查询的表
    • eq_ref:根据主键索引查询或者唯一索引查询,所以只能返回一条数据
    • ref:根据索引查询,可能是非唯一索引可返回多条数据。
    • range: 根据索引查询的,但是条件是范围查询。
    • index:走的是全索引查询,会去遍历整个索引树,在去检索数据,效率不高。
    • all:不走索引,全盘扫描数据,效率不高
1、是否命中索引判断

通过key实际命中的索引、key_len实际命中的索引占用的大小两者即可判断出是否命中索引。

2、使用了索引但有优化空间

Extra 额外的优化建议,如果出现了回表查询也就是Using index condition,则还有继续优化的空间

在这里插入图片描述

3、根据sql连接类型判断

如果连接类型为如下index和all,通常需要优化

index:走的是全索引查询,会去遍历整个索引树,在去检索数据,效率不高。

all:不走索引,全盘扫描数据,效率不高

2、索引失效情况分析解决

通过执行计划分析后,如果存在索引失效情况。则需要分析为何索引失效了。

1、违反最佳左前缀法则

如下:我们在tb_seller表建立了一个复合索引,字段顺序name、status、address;
在这里插入图片描述

如下查询时需要按顺序查询,都命中了索引;

在这里插入图片描述

如下违反了左前缀法则,导致没有命中索引
在这里插入图片描述
在这里插入图片描述

2、范围查询右边的列

如下图第二个sql,status字段使用了范围查询,导致address不走索引了,所以key_len长度值只用309。只有name和status才走了索引。
在这里插入图片描述

3、索引列使用函数

如下图:索引列使用了substring导致索引失效了。
在这里插入图片描述

4、索引列使用类型转换

在这里插入图片描述

5、模糊查询的%在前面

如下图:如果模糊查询时%放在前面,会导致索引失效。

在这里插入图片描述

4、分析超大数据分页问题优化

在这里插入图片描述

1、通过覆盖索引优化

先通过表中的id进行分页查询,就能筛选出id集合。在通过id集合和原来的表做关联查询。即可得到结果。
在这里插入图片描述

提升了4秒。

5、分析表设计方面优化

在这里插入图片描述

6、分析使用union all 代替union

union会将重复的数据去重,union all 不会。所以union all 少了过滤操作,自然效率就高。

7、分析使用内连代替左连和右连

在这里插入图片描述

内连inner join会自动对两个表进行优化。

8、分析使用读写分离

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/475115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算几何】帝国边界划分问题【Voronoi图的原理】

一、说明 Voronoi 单元也称为泰森多边形。 Voronoi 图在许多领域都有实际和理论应用,主要是在科学和技术领域,但也在视觉艺术领域使用。Voronoi 图以数学家 Georgy Voronoy 的名字命名,也称为 Voronoi 镶嵌、Voronoi 分解、Voronoi 分区或 Di…

减少过拟合:暂退法

文章目录 (一)过拟合(二)暂退法 (一)过拟合 1.过拟合产生的原因 (1)根本原因: 我们都知道模型参数的优化方式:反向传播更新梯度,然后随机梯度下降。 也非常清楚模型参…

【Java笔试强训 9】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥另类加法…

弗洛伊德算法(求最短路径)

弗洛伊德算法介绍 和迪杰斯特拉算法一 样, 弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某-一个顶点到其他项点的最短路径。弗洛伊德算法VS迪杰斯特拉算…

【数据库架构】PostgreSQL的最佳群集高可用性方案

如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。 我们将讨论一些解决方案,您可以从中选择对您的容错要求。 PostgreSQL本身不支持任何多主群集解决方案&#xff0…

Python Unet ++ :医学图像分割,医学细胞分割,Unet医学图像处理,语义分割

一,语义分割:分割领域前几年的发展 图像分割是机器视觉任务的一个重要基础任务,在图像分析、自动驾驶、视频监控等方面都有很重要的作用。图像分割可以被看成一个分类任务,需要给每个像素进行分类,所以就比图像分类任务…

C++-FFmpeg-8-(1)基本概念与原理-rtsp-I、P、B 帧-DTS、PTS-

目录 1.rtsp是什么? 2. I、P、B 帧 3.DTS、PTS 4.rtsp协议抓包分析? 1.rtsp是什么? 流程: 鉴权: 2种 :basice64 Digest 哈希值 哈希值不可逆。nonce 做的单项散列(MD5,SHA512&#xff0…

HTML(二) -- 表格设计

目录 1. 基本格式&#xff1a; 表格常用属性&#xff1a; 2. 表格标签 为什么使用表格&#xff1f; 简单通用、结构稳定数据显示的非常的规整、可读性非常好 1. 基本格式&#xff1a; <table style"border: 1px solid black;" border"1px">&l…

AWE2023什么值得看?智哪儿带你五大关键词读懂AWE2023

4月27至30日&#xff0c;2023年中国家电及消费电子博览会&#xff08;AWE 2023&#xff09;在上海浦东新国际博览中心开展。 作为与德国IFA、美国CES并肩的全球前三国际家电及消费电子展览会&#xff0c;时隔两年AWE终于重启。沉淀两年&#xff0c;它的规模也是历年最大&#x…

QT+OpenCV配置

QTOpenCV配置 1 下载CMake2 安装CMake3 下载OPenCV4 配置环境变量4.1 配置QT环境变量4.2 配置CMake环境变量4.3 重启电脑生效 5 CMake编译OPenCV5.1 解决报错 6 测试 1 下载CMake 链接&#xff1a;https://cmake.org/download/ 2 安装CMake 3 下载OPenCV 链接&#xff1a;htt…

本地elasticsearch中文分词器 ik分词器安装及使用

ElasticSearch 内置了分词器&#xff0c;如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好&#xff0c;不能按我们的语言习惯进行分词。 ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词&#xff0c;并且支持用户配置自…

网络设备中VRRP协议和Linux服务器中keepalived的两个区别

1、什么是VRRP&#xff1f;keepalived又是什么&#xff1f; VRRP全称是Virtual Router Redundancy Protocol&#xff0c;即虚拟路由冗余协议。它的主要目的是在一个网络中提供冗余的路由。当一个三层网络设备或服务器出现故障时&#xff0c;VRRP可以确保网络仍能正常工作。VRR…

在.NET Core中正确使用HttpClient的方式

HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类&#xff0c;用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法&#xff0c;如 GET、POST、PUT 和 DELETE&#xff0c;可以很容易地构造和发送 HTTP 请求&#xff0c;并处理响应数据。…

算法之时间复杂度---数据结构

目录 前言&#xff1a; 1.时间复杂度 1.1时间复杂度的理解 1.2规模与基本操作执行次数 1.3大O渐进表示法 1.4计算基本操作的次数 2.常见的时间复杂度及其优劣比较 ❤博主CSDN&#xff1a;啊苏要学习 ▶专栏分类&#xff1a;数据结构◀ 学习数据结构是一件有趣的事情&…

2023五一数学建模B题完整模型代码【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 随着网络购物的普及和发展&#xff0c;快递行业需求持续增长&#xff0c;对于快递公司来说&#xff0c;准确预测运输需求以及合理规划运输线路和仓库布局变得…

分享一个有意思的键盘,我们就只会ctrl c+v

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;}:roo…

【pyTorch学习笔记④】PyTorch基础·中篇

文章目录 三、Numpy与Tensor3.Tensor的索引4.Tensor的广播机制5.逐元素操作6.归并操作7.比较操作8.矩阵操作9.PyTorch与Numpy的比较 相关推荐 三、Numpy与Tensor 3.Tensor的索引 &#xff08;1&#xff09;item&#xff1a;若Tensor为单元素&#xff0c;则返回标量&#xff0…

驱动开发:通过MDL映射实现多次通信

在前几篇文章中LyShark通过多种方式实现了驱动程序与应用层之间的通信&#xff0c;这其中就包括了通过运用SystemBuf缓冲区通信&#xff0c;运用ReadFile读写通信&#xff0c;运用PIPE管道通信&#xff0c;以及运用ASYNC反向通信&#xff0c;这些通信方式在应对一收一发模式的时…

【Java笔试强训 8】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;两种排…

【Java笔试强训 6】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;不要二 …