Mysql深入——5

SQL语句为什么有时候会执行的很慢

这种情况是随机的,有时候突然你执行一条语句就会变慢,这是为什么呢?

从以前的内容可以得知,InnoDB在执行更新语句的时候,有一个redo log,更新内存写完redo log之后就返回给客户端,代表着更新成功。

将内存中的数据写入磁盘的过程就叫做flush,当内存数据页跟磁盘数据页不一样的时候,称这个内存页为脏页,当吧内存数据写入磁盘后,内存和磁盘上的数据页就一致了,成为“干净页”

在执行Mysql语句的过程中,有可能因为flush过程使得执行过程变慢,那么哪些情况会导致flush呢?

1. InnoDB的redo log写满了。这个时候系统就会停止所有更新操作吧check point往前推进,使得redo log留出空间继续写

2. 系统内存不足,需要新的内存页,内存不够用的时候就要淘汰出一些数据页,空出内存页给别的数据页使用,如果淘汰的数据页是脏页,就得把脏页写入到磁盘中。

那么为什么不直接淘汰内存,从磁盘读入数据页,应用的时候直接把redo log拿出来就行了。

从性能来考虑,刷脏页会写盘,保证每个数据页有两种状态,1.内存中存在就会直接返回。2.内存中没有数据,将数据文件上的数据读入内存后返回

3.在系统空闲的时候刷脏页进行更新

4. Mysql正常关闭的时候

那么接下来分析上述四种场景刷脏页时对性能的影响

第三种情况的时候是系统空闲的时候去刷,很显然对性能没有什么影响,第四种是Mysql关闭的时候,也没有什么影响,接下来我们主要看一二种情况

第一种是redo log写满了,出现这种情况是任何时候都要去避免的,因为redo log写满后会,需要立即将redo log中的内容更新到内存当中,因为redo log已满,无法记录其他更新,这个时候就得堵住更新入口,这个时候更新数跌为0。

第二种情况是内存不够用,要现将脏页写入到内存当中,这种情况是常态,InnoDB用缓存池(buffer pool)管理内存,内存页有三种状态:1.未使用2.使用了为干净页3.使用了为脏页

InnoDB的策略是尽量使用内存,因此对于一个库来说,未被使用的页面很少,当读入的数据页没有内存的时候,就得去buffer pool中申请一个数据页,这个时候它会将很久不用的数据页给淘汰掉,当淘汰的数据页为干净页时,就直接释放使用,当为脏页的时候,就会刷入到磁盘变为干净页再使用。

刷脏页太多也会导致查询响应的时间变长

为了避免上述的两种情况,InooDB需要控制脏页比例的时机

innodb_io_capacity时告诉InnoDB你的磁盘能力的

因素有两种为脏页太多或者是redo log写满

故考虑脏页比例和redo log写盘速度这两种

innodb_max_dirty_pages_pct是脏页比例上限默认为百分之七十五

InnoDB会根据当前脏页比例,计算出一个数字:100*M/innodb_max_dirty_pages_pct得出F1(M)

InnoDB每次写入日志都有一个序号,写入序号与check point对应的序号之间的差值为N,他会赓续N拿出一个1-100的数字计算出F2(N),N越大,数值越大

上述算出F1(M),F2(N)两个值,取较大的为R,引擎就会按照innodb_io_capacity乘以R%来控制刷脏页的速度。

为了避免这种情况,要合理的设置innodb_io_capacity的值,并且时刻关注脏页比例,不让他超过百分之七十五。

脏页中的连坐机制

当一个查询请求在执行过程中会先flush一个脏页的时候,如果旁边的数据页也为脏页,就会一起flush掉,这个邻居的邻居如果也是脏页也会被flush掉。

innodb_flush_neighbors就是来控制这种情况的,当它等于1的时候执行,等于0的时候不执行

在Mysql8.0之后默认为0

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

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

相关文章

解读 | 从谷歌AI判定阿波罗登月“造假“来谈谈合成图片检测技术

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 整个事情可以爬楼看…

Vue3的transition标签以及animate.css使用详解

一:前言 在项目开发中,有一种特殊情况是使用动画过渡去完成某个效果。比如淡入淡出,或者在动画完成后执行某些操作等。在以前开发中我们通常会选择使用 CSS3 进行研发。但是这样会有很多不好的地方,比如最原始化的封装&#xff0c…

VMware系列:此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI

此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI 一. 此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI1.首先了解此选项有什么作用:(开启虚拟化 虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI )操作1.从系统层面设置入手:操作2.从电脑软件冲突层面解决问题:然后关闭Hyper-V的相关设…

Spring Security 6.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构,为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统,包括: Username and Password:使用用户名/密码 方式…

别做无用功!了解伦敦银交易指标的分类

在伦敦银投资中,我们都喜欢使用技术指标来帮助我们判断市场行情、预测银价点位。其实,伦敦银的技术指标是有不同分类的,我们了解主要的几类,这样在交易中才不至于将相同类型的叠加在一起,这样容易降低决策效率。 分类一…

Docker compose启动服务遇到的问题

这是学长留的一个任务,用docker compose启动三个服务,分别是minio、elasticsearch、nginx。 话不多说,让我们看看有哪些错误。 一、数据卷挂载权限问题 这是原始docker-compose.yaml文件 version: "3.8"networks:my-net:name: g…

最强学习辅助工具重磅上市:虚拟与现实互动结合助力学习更快一步

太让人震撼了!!当当狸这款AR智能学习图集打破了传统历史学习材料壁垒 将AR增强现实技术与诗词互动、历史人文、古典建筑巧妙融合 内容真实有趣,全面激发孩子们的学习探索兴趣 妈妈们都想入手的【教学辅助工具】 有了它,孩子学…

2.3基于springboot养老院管理系统

2.3基于springboot养老院管理系统 成品项目已经更新!同学们可以打开链接查看!需要定做的及时联系我!专业团队定做!全程包售后! 2000套项目视频链接:https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

docker-compose Install OrangeHRM

OrangeHRM 前言 OrangeHRM 是一个全面的人力资源管理(HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。 OrangeHRM 提前条件 OrangeHRMdocker & docker-composer 安装or

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

Linux后台运行jar包

Linux后台运行jar包 方式一 命令如下: java -jar /data/tools/jar/demo.jar注:/data/tools/jar:指定jar包所在位置,否则要在jar包所在位置运行改命令;当前ssh窗口被锁定,可按CTRL C打断程序运行&#xf…

小功能实现(十八)生成kml文件

引入依赖 <!--解析、生成kml文件类--><dependency><groupId>de.micromata.jak</groupId><artifactId>JavaAPIforKml</artifactId><version>2.2.0</version></dependency>使用方法 注意&#xff1a;需要什么内容可自行添…

Mysql深入——6

数据库占用空间太大&#xff0c;将表删除掉一半的数据后&#xff0c;为什么表的大小还是没有变 数据库的回收&#xff0c;一个InnoDB表中包含了两个部分&#xff0c;分别是表结构定义和数据。在Mysql8.0以前&#xff0c;表结构是存在以.frm为后缀的文件里&#xff0c;在mysql8…

CCC联盟数字钥匙(一)——UWB MAC概述

本文在前面已经介绍了相关UWB的PHY之后&#xff0c;重点介绍数字钥匙&#xff08;Digital Key&#xff09;中关于MAC层的相关实现规范。由于MAC层相应涉及内容比较多&#xff0c;本文首先从介绍UWB MAC的整体框架&#xff0c;后续陆续介绍相关的网络、协议等内容。 1、UWB MAC架…

android安全启动验证链(安全启动 secure boot)

android安全启动验证链_android 安全启动_Kael.dong的博客-CSDN博客

class类

如果有一个名为 ExampleClass 的类&#xff0c;可以通过 ExampleClass.class 获取表示该类的 Class 类实例&#xff0c;或者如果你有一个 ExampleClass 类的对象 exampleObject&#xff0c;可以通过 exampleObject.getClass() 来获取。这些 Class 类的实例可以用来在运行时查询…

深入redis过程-命令

目录 通用命令 get set keys exists del expire key seconds ttl type 常用数据结构 String类型 SET GET MSET MGET INCR INCRBY INCRBYFLOAT SETNX SETEX Hash类型 HSET key field value HGET key field HMSET HMGET HGETALL HKEYS HVALS HINCRB…

Linux telnet命令详解:通过TCP/IP网络连接与管理远程机器(附实例教程和注意事项)

Linux telnet命令介绍 telnet命令&#xff0c;全称为teletype network&#xff0c;是一个使用telnet网络协议来连接并管理远程机器的命令。它通过TCP/IP网络使用端口23来建立连接&#xff0c;并提供了一种使用命令行界面&#xff08;CLI&#xff09;管理远程系统的方式。虽然t…

vue3 wangeditor 富文本使用自定义上传图片

wangeditor wangeditor 下载 pnpm add wangeditor/editorpnpm add wangeditor/editor-for-vuenextmode: ‘default’ 默认模式 - 集成了 wangEditor 所有功能 mode: ‘simple’ 简洁模式 - 仅有部分常见功能&#xff0c;但更加简洁易用 基础结构 <script lang"ts&…

定制开发办公软件在企业发展中的优势|app小程序网站搭建

定制开发办公软件在企业发展中的优势|app小程序网站搭建 如今&#xff0c;办公软件已经成为企业日常工作的必需品。很多企业为了提高工作效率和满足自身业务需要&#xff0c;选择定制开发办公软件。下面将介绍定制开发办公软件在企业发展中的优势。 首先&#xff0c;定制开发办…