MySQL数据库-优化慢查询

1、什么是慢查询?

慢查询就是SQL执行时间过长,严重影响用户体验的SQL查询语句。当它频繁出现时数据库的性能和稳定性都会受到威胁

慢查询是数据库性能瓶颈的常见原因,是指SQL执行时间超过阈值;可能由于复杂的连接、缺少索引、不恰当的查询设计或数据量过大而导致变慢。

2、如何解决慢查询?

重写查询、添加或优化索引、调整数据库配置等

 2.1、追踪慢查询

想要追踪慢查询,首先需要在mysql中有一个名为 long-query-time的配置项,它定义了慢查询的阈值。一旦SQL语句执行超过阈值,就会被标记为慢查询。通过一系列命令,我们可以轻松地查看、开启、关闭慢查询监控,并设置合适的阈值。当然,为了让这些配置永久生效,你还需要在 my.conf 文件中进行相应设置。

 3、怎样提升性能?

通过添加索引来提升查询速度,并揭示索引失效的常见场景。掌握这些必备技能,你将能够轻松应对各种性能挑战,让数据库运行更加高效稳定。

3.1、添加索引提升查询速度 
  1.  数据内存中比较相比mysql的查询产生io的耗时可忽略不计,所以查询速度取决于查询过程中的IO次数耗时,即提高查询次数的有效方法是减少IO次数(mysql的数据是存储在磁盘中) 
  2. MYSQL innoDB引擎索引数据结构是B+tree结构(树节点称为数据叶) 
  3. 每个数据叶默认大小为16kb(16384)(show VARIABLES like ‘innodb_page_size’;) 
  4. 对于主键索引,假设一行数据1kb,则叶子可存16条数据。
  5.     当B+Tree的高度为h = 2 则数据量为 1170 * 16 = 18720条数据。
  6.     当B+Tree的高度为 h = 3 则数据量为1170 * 11170 * 16 = 21902400条数据(2190.24万)
  7. 对于非主键索引,则叶子节点的索引信息有 16384 /(8+8)= 1024个索引信息。
  8. 若h=2 则数据量为 1170 * 1024 = 1198080。 
  9. 若h=3 则数据量为 117011701024 = 1401753600条数据(14亿零175.36万)。 
  10.  假设我们用bigint做为主键索引大概占8个字节,(B+tree特点)有指向下一个的指针大概占6个字符,则每个数据叶可以存放的索引信息有 16384 / (8 + 6)= 1170个索引信息。 
  11. 分析得出结论: 
  12. 非主键索引,索引覆盖,14亿条数据情况下只需要3次io即可查询到想要的数据
  13. 主键索引查询,2190.24万条数据情况下只走需要3次 io 即可查询到想要的数据 
3.2、索引失效场景 

了解索引失效的场景,避免因SQL语句索引失效而引起的慢查询: 

 结语:解决慢查询问题并非一蹴而就的过程,需要持续关注和不断优化。只有这样,你才能确保数据库始终保持在最佳状态,为业务发展提供强有力的支撑。

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

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

相关文章

hudi系列-schema evolution

在RFC-33中描述,hudi对schema evolution进行了统一设计,在官网文档中也指明了从0.11版本开始,spark-sql ddl是支持schema evolution的,而flink-sql在旧版本中并不支持ddl方式对表结构,所以full schema evolution都隐藏在读写过程中。对于使用者,我们最终只关心表的读和写…

Linux给磁盘扩容(LVM方式)

Linux给磁盘扩容(LVM方式) 最近测试性能,在本地打数据时,发现磁盘空间不足,于是想手动给/挂载点添加空间。这里介绍通过LVM方式快速给磁盘扩容。 LVM:是一种技术,方便管理磁盘。如果不用LVM,那…

XSS漏洞---类型+实战案例+防止

文章目录 目录 文章目录 一.XSS漏洞简介 二.XSS漏洞类型 三.实战案例 反射型XSS 存储型XSS 四.防护措施 一.XSS漏洞简介 XSS漏洞(Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,它允许攻击者在受害者的浏览器中注入恶意脚本。当受…

基于STM32单片机的水位监控与报警系统设计

基于STM32单片机的水位监控与报警系统设计 摘要:随着科技的不断发展,单片机技术在工业自动化、环境监测等领域得到了广泛应用。本文设计了一种基于STM32单片机的水位监控与报警系统,通过电位器模拟当前的水位高度,并实时显示在LC…

neovim添加clipboard = “unnamedplus“出现打开速度变慢的解决办法

文章目录 一、前言二、解决问题1、下载win32yank.exe2、把下面的内容放到init.lua 三、最后 一、前言 笔者最近在wsl下重新配neovim时,发现打开速度会变得很慢。耗费巨大时间,终于找到原因。注释掉配置文件(init.lua or optioons.lua&#x…

【LeetCode热题100】【图论】岛屿数量

题目链接:200. 岛屿数量 - 力扣(LeetCode) 考察图的遍历,从岛上上下左右能到达的地方都是这个岛 首先需要判断图的边界,然后再上下左右继续深度遍历,并把遍历到的标记为已访问,可以原地修改图…

linux下的chattr命令是什么意思

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取编程资料 chattr 是一个用于修改 Linux 文件系统中文件或目录属性的命令行工具。它允许我们更改文件的特定属性&…

【python】计算水仙花数

【python】计算水仙花数 "水仙花数"是指一个3位数,它的三个位上的数字的3次幂之和等于它本身。例如,"153"就是一个水仙花数,因为1^3 5^3 3^3 153。以下是一个Python代码示例,用于计算并打印出所有的三位数…

konva.js 工具类

konva.js 工具类 import StringUtils from "./StringUtil.js";class KonvaCanvas {/*** 初始化画布* param {String} domId 容器dom id*/constructor(domId) {this.layer null;this.stage null;this.scale 1.0;this.init(domId);}/*** 聚焦到指定元素* param {St…

树和森林的遍历

一、树的先根遍历: 先根遍历:若树非空,先访问根结点,再依次对每棵子树进行先根遍历。 //树的先根遍历 void Pre0rder(TreeNode *R){if(R!NULL){visit(R); //访问根节点while(R还有下一个子树T)Pre0rder(T); …

OpenSBI初始化分析

OpenSBI初始化分析 OpenSBI初始化启动流程:主要涉及三个阶段 OpenSBI底层初始化 OpenSBI初始化 启动流程:主要涉及三个阶段 .S汇编阶段,主要是Opensbi的底层初始化阶段,为C准备执行环境;设备初始化阶段,此…

elmentui树形表格使用Sortable拖拽展开行时拖拽bug

1、使用elemntui的el-table使用Sortable进行拖拽,如下 const el this.$el.querySelector(.el-table__body-wrapper tbody) Sortable.create(el, {onEnd: (event) > {const { oldIndex, newIndex } event//拿到更新前后的下标即可完成数据的更新} })2、但是我这…

java中将1.1、3.3、6.6、0.0、0.0等double类型数据相加得到结果精度丢失问题

在项目中需要统计各个商品的价格。出现结果丢失问题。如下 问题代码 Testvoid contextLoads4() throws Exception{double a 3.3;double b 6.6;double c 1.1;double d 0.0;ArrayList<Double> arrayList new ArrayList();arrayList.add(a);arrayList.add(b);array…

【深度学习实战(9)】三种保存和加载模型的方式

一、state_dict方式&#xff08;推荐&#xff09; torch.save(model.state_dict(), PATH)model YourModel() model.load_state_dict(torch.load(PATH)) model.eval()记住一定要使用model.eval()来固定dropout和归一化层&#xff0c;否则每次推理会生成不同的结果。 二、整个…

pymysql +SQLAlchemy操作MySQL数据库(ORM)

一、sqlalchemy简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM&#xff08;对象关系映射&#xff09;工具&#xff0c;使用MIT许可证发行。 SQLAlchemy采用简单的Python语言&#xff0c;提供高效和高性能的数据库访问&#xff0c;实现了完整的…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

常用命令及简单shell语句

常用命令及简单shell语句 ● 删除注释和空行 sed -e "s/#.*//g" test_file.conf | awk {if (length !0) print $0} ● ES查看更多有关于集群信息、当前节点统计信息等等 curl -XGET http://ip:9200/_cat/nodes?pretty ● 过滤僵尸进程 ps -A -ostat,ppid,pid,cmd…

NLP(4)--实现一个线性层

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 感觉全连接层就像一个中间层转换数据的形态的,或者说预处理数据&#xff1f; 代码 里面有两个部分&#xff0c;一部分是自己实现的&#xff0c;一部分是利用模块的方法实现的。 import torch import torch.nn as nn import…

后端jar包部署常见运行和停止命令

目录 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; 二、停止Jar包的运行&#xff1a; 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; nohup java -jar xxx.jar > log.file 2>&…

【Tesla T4为例】GPU安装最新版本NVIDIA Driver、CUDA、cuDNN、Anaconda、Pytorch

NVIDIA Driver 进入英伟达官网下载页面 按照以上方式选择即可得到>535.113.01版本的驱动&#xff0c;可以实现多卡推理&#xff0c;小于这个版本会导致多卡训练以及推理报错 虽然最新版本为550.54.15&#xff0c;但是535版本更加稳定&#xff0c;并且pytorch目前只支持到1…