MySql调优基础知识

news2024/9/22 21:22:36

MySql调优

调优金字塔
在这里插入图片描述

系统设计:数据不适合放入mysql,es、MQ、Redis、读写分离。
mysql调优:主要是索引且要熟悉业务。
mysql导致慢查询的原因是因为数据太多了。

1.sql查询

1.1尽量使用覆盖索引

1.2数据表结构,统计汇总,

1.3重写sql

1.4慢查询

1.4.1 sql查询次数多的入部门、角色缓存到redis中

1.4.2相应时间=系统处理时间+排队时间

1.4.3mysql记录所有执行超过long_query_time参数设定的时间阈值的sql日志

show variables like 'slow_query_log';(	默认关闭,默认单位是秒)
set GLOBAL show_query_log = 1;
日志存放哪里呢?
show variables like '%slow_query_log_file%'

没有用到索引的语句开启慢查询日志

show variables like '%log_queries_not_using_indexes%';
set GLOBAL log_queries_not_using_indexes= 1;

使用cat 查看日志
在这里插入图片描述

Rows_examinedL10567 查询了多少行。

1.4.4 mysqldumpslow 工具使用

mysqldumpslow -s r -t 10 centosvm-slow.log
显示前10行执最多行的慢日志
r:结果用的行数
c:总次数
l :锁

1.5执行计划

  • 关键字explain select * from xxx
    在这里插入图片描述

1.5.1 各项指标

id:代表的是 select 语句执行的id,id 越大代表执行顺序越早,id 最小的最慢执行。
select_type:查询类型
table:表
partitions:分区信息
type:这一列表示关联类型或访问类型,即 MySQL 决定如何查找表中的行,查找数据行记录的大概范围。一般来说,得保证查询达到 range 级别,最好达到 ref
possible_keys:这一列显示查询可能使用哪些索引来查找。这只是可能用到的索引,最终是否真的使用了,还要看 key 列
keys:最终使用的索引
key_len:这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列
ref:这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:film.id)
rows:这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数
filtered:过滤信息
Extra:这一列展示的是额外信息。常见的重要值如下:Using index:使用覆盖索引;Using where:使用 where 语句来处理结果,并且查询的列未被索引覆盖;Using index condition:查询的列不完全被索引覆盖,where条件中是一个前导列的范围;Using temporary:mysql需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的,首先是想到用索引来优化;Using filesort:将用外部排序而不是索引排序,数据较小时从内存排序,否则需要在磁盘完成排序。这种情况下一般也是要考虑使用索引来优化的;Select tables optimized away:使用某些聚合函数(比如 max、min)来访问存在索引的某个字段是

1.5.2 id

id显示的是具体执行的有几个select 语句
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
union 去重,需要建立临时表,所以会显示null

1.5.2 select_type

SIMPLE:简单的select查询,不适用union及子查询
PRIMARY:最外层的select 查询
UNION:union中的第二个或随后的select查询,不依赖于外部查询的结果集。
UNION RESULT:union结果集
SUBQUERY:子查询中第一个select查询不依赖于外部查询的结果集
DEPENDENT UNION :UNION中的第二个或随后的select查询,依赖于外部查询的结果集
DEPENDENT SUBQUERY:子查询中的第一个select 查询,依赖于外部查询的结果集
DERIVED:用于from子句里有查询的情况,Mysql会递归指向这些子查询,不结果放到临时表中。

1.5.3 type重要指标

system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。
const 通过主键索引命中一行数据
eq_ref 连接查询通过二级索引或者主键查询后命中数据,
ref  通过二级索引命中一行数据
fulltext 通过全文索引
ref_or_null :有空或者查询字段内容则会出现ref_or_null 
![](https://img-blog.csdnimg.cn/bd791e6136a84fcbb3124ac9665006e8.png)

1.5.4 index_merge 针对一张表,使用两个单独的索引进行查询则会出现还有就是增加子查询

在这里插入图片描述

1.5.5 range 范围查询 在这里插入图片描述

1.5.6 index 联合索引查询根据展示的列就是index,

在这里插入图片描述

1.5.7 驱动表和驱动表

通过A查询B中的数据,A就是驱动表,B就是被驱动表。

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

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

相关文章

普通单双面板的生产工艺流程之图形转移,华秋一文告诉你

衔接上文,继续为朋友们分享普通单双面板的生产工艺流程。 如图,第五道主流程为图形转移。 图形转移的目的为: 利用光化学原理,将图形线路的形状转移到印制板上,再利用化学原理,将图形线路在印制板上制作出…

Tomcat- AJP协议文件读取/命令执行漏洞(CVE-2020-1938 / CNVD-2020-10487)

CVE-2020-1938 1.概述1.1 tomcat概述1.2 gostcat概述 - 漏洞概述2. 漏洞成因2.1 前置基础2.1.1 Tomcat Connector(连接器)2.1.2 Servlet(服务程序)2.1.3 Tomcat内部处理请求流程2.2 源码追踪分析两个利用方案的执行流程2.2.1 获取利用poc2.2.2 文件读取漏洞关键点1:…

CSDN城市开发者联盟、C友会期待你的加入

文章目录🌟 课前小差🌟 chatGPT🌟 CSDN中的持续学习🌟 23年原力计划🌟 C友会、CDC🌟 如何关联本地的开发者?🌟 写在最后🌟 课前小差 哈喽,大家好&#xff0c…

2月datawhale组队学习:大数据

文章目录一、大数据概述二、 Hadoop2.1 Hadoop概述2.2 su:Authentication failure2.3 使用sudo命令报错xxx is not in the sudoers file. This incident will be reported.2.4 创建用户datawhale,安装java8:2.5 安装单机版Hadoop2.5.1 安装Hadoop2.5.2 修…

excel报表技巧:几个关于汇报演示方面的小功能

年终了,总结汇报避免不了。如果你的PPT还不够好,那就直接用Excel做汇报吧~这里有5条小技巧,可以帮助你最高效地展示自己的成绩报表!想象一下,用SHIFTCTRLF1全屏显示你的工作表,配合上CtrlPageDown进行工作表…

WMS系统解决方案,数据从“人工采集”转为“自动采集”

今年以来,新冠疫情危机促使国内企业重新审视自我发展,加速了行业转型的步伐。很多制造企业放慢了规模扩张的脚步,应需而变,从规模速度型向质量效率型转型升级。纵观市场现状,很多制造企业面临产能过剩、成本上升、库存…

CHAPTER 4 监控全网服务器

监控全网服务器4.1 需求说明4.2 规划方案4.2.1 api接口使用(curl)4.3 具体实施规划4.3.1 硬件、系统、网络监控4.3.2 应用服务监控4.3.3 监控服务通用方法4.4 实施全网监控4.4.1 使用自动发现规则4.4.2 监控备份服务器1. 添加模板2. 添加应用集3. 添加监…

【观察】Solidigm P44 Pro SSD评测:原厂品质+软硬兼施=性能怪兽

众所周知,目前SSD(固态硬盘)已取代HDD(机械硬盘)成为电脑中常见的存储设备,特别是在技术创新的持续推动下,如今SSD的速度和效率都在不断地提高,从SATA2 3GB发展到SATA3 6GB&#xff…

计算机组成原理学习笔记:循环冗余校验码

循环冗余校验码 CRC 码 循环冗余校验码 (cyclic redundancy Check, CRC) 十进制除法 从熟悉的十进制出发,假设现在你要给另一个人传送882这样的一个10进制数据,为了防止传送数据的过程中某一个数据发生错误你可以和你的另一个小伙伴约定一个除数&…

英文论文(sci)解读复现【NO.5】让RepVGG再次变得更强大:一种量化感知方法

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的SCI论文&am…

2023年可见光通信(LiFi)研究新进展

可见光无线通信Light Fidelity(LiFi)又称“光保真技术”,是一种利用可见光进行数据传输的全新无线传输技术。LiFi是一种以半导体光源作为信号发射源,利用无需授权的自由光谱实现无线连接的新型无线通信技术,支持高密度…

内网渗透(三十六)之横向移动篇-Password Spraying密码喷洒攻击和域内用户枚举横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

【原创】java+swing+mysql宿舍报修管理系统设计与实现

本文主要想利用javaswingmysql等开发技术设计一个高校宿舍报修管理系统,方便广大学生对宿舍中损坏的物品进行报修处理,提高报修效率。 功能分析: 宿舍报修管理系统的使用角色,一般分为管理员和学生,管理员主要进行学…

深入理解顺序io和随机io(全网最详细篇)

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

汽车如何实现制动

汽车如何实现制动 汽车如何实现制动 难点答疑:汽车刹车时,四个车轮是如何制动的?制动机理是什么? 第一步:驾驶员踩下制动踏板,推动制动主缸 第二步:制动主缸将制动液的压力通过制动管道传递到四…

数据结构代码总结(C语言实现)

目录如何应对数据结构的代码题?采取的学习流程①首先对C语言的语法的熟悉②学习掌握基本代码的写法,做到熟练2.1插入排序2.2快速排序2.3二分查找2.4树的遍历③跟着网上视频开始熟悉对一些问题的解答④结合真题的代码,寻找其中的结题规律如何应…

CasEE: 一种用于重叠事件抽取的级联解码联合学习框架 论文解读

CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction (用于重叠事件抽取的级联解码联合学习框架) 论文:CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction (aclanthology.org) 代…

通俗易懂理解三次握手、四次挥手(TCP)

文章目录1、通俗语言理解1.1 三次握手1.2 四次挥手2、进一步理解三次握手和四次挥手2.1 三次握手2.2 四次挥手1、通俗语言理解 1.1 三次握手 C:客户端 S:服务器端 第一次握手: C:在吗?我要和你建立连接。 第二次握手&#xff…

设计模式之门面模式与装饰器模式详解和应用

目录1 门面模式定义1.1 门面模式的应用场景1.2 门面模式的通用写法1.3 门面模式业务场景实例1.4 门面模式在源码中的应用1.5 门面模式的优缺点2 装饰器模式2.1 装饰器模式定义2.2 装饰器模式的应用场景2.3 装饰器模式在源码中的应用2.4 装饰器模式和代理模式对比2.5 装饰器模式…

git命令篇(持续更新中)

首先介绍这个网页&#xff1a;https://learngitbranching.js.org/?localezh_CN --提交命令 git commit --创建分支 git branch <分支名> --切换分支 git checkout <分支名> --合并分支 (合并到主分支去&#xff0c;把我合并到谁的身上去) 自己写的分支合并到主线…