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

MySQL中的redo log 和 undo log

 undo log和redo log


先引入两个概念:

1b1a0667e88348d596b380fb905dc410.png

        当我们做了一些操作 (update/delete/insert),提交事务后要操作MySql中的数据。

为了能够提升性能,引入了两块区域:内存结构磁盘结构

磁盘结构

        主要存储的就是数据页,每个数据页存储的就是表中一行一行的数据。(一个表的数据,可能由多个数据页存储)。

但当我们做一些增删改的操作时,不会直接操作磁盘。而是先去操作内存

内存结构

        当操作来了以后,先来操作缓冲池。从内存中的缓冲池里面先找,有没有我要操作的数据。如果没有,就会把磁盘中的数据(某一个数据页的数据)加载到缓冲池中。这样直接操作内存,性能会更高!操作完成之后,缓冲池中数据会同步给磁盘。这样就减少磁盘的IO,加快了处理速度!

这就引出了问题:

现在内存中的数据页被操作完了,但还没同步到磁盘中 (此时这个数据页称为脏页),这个时候服务器宕机了,同步失败了。内存中的数据可能就消失了,数据丢失了。这就违背了事务持久化的特性。


解决方案:redo log (解决事务持久性)

928888e8bd36432e98155867db7980da.png

加入Redolog buffer和Redolog file后,数据操作也会发生一点变化。

         当有增删改操作之后,现在buffer pool已经发生了变化。Redolog buffer就会记录对应数据页发生的变化,一旦Redolog buffer发生变化 (说明有新的数据页变化)。就会同步给磁盘中的Redolog file中。现在一旦buffer pool对脏页数据同步失败了,就可以从Redolog file恢复数据!

注意:你可能会有疑问,这样做岂不是更麻烦了?不用这个Redolog行不行呢?比如说当buffer pool中的数据页发生变化直接进行同步不好吗?

答:这样做不好,会有严重的性能问题。当我们操作增删改的时候,会有大量的update等语句,如果我们同步刷新,对磁盘IO次数太多了,每执行一条sql可能就要进行一次连接数据库。而如果使用redolog,它进行数据同步时,都是顺序的磁盘IO (可以理解为进行了归纳,连接一次数据库会进行多条sql语句)。这样性能就可以大大提升了!

注意:

        等到脏页刷新完成后,可以认为redo log不需要了,进行定期清理,等下一个事务需要的时候,又往里面填写内容,文件不会删除,而是重复利用。两个redo log文件循环写的。


undo log:回滚日志 (解决事务一致性和原子性)

28a87cf475c5440386346470c17b7b70.png


二者区别:

11a26a5cc4cc4cc68a4937892d0e9c08.png

相关文章:

MySQL中的redo log 和 undo log

undo log和redo log 先引入两个概念: 当我们做了一些操作 (update/delete/insert),提交事务后要操作MySql中的数据。 为了能够提升性能,引入了两块区域:内存结构和磁盘结构。 磁盘结构: 主要存储的就是数据页&#x…...

net/http与gin框架的关系分析

要想学好 gin 框架,首先要学习 net/http 服务,而二者的关系又是重中之重。 本文所要做的任务就是将二者“连接” 起来,让读者掌握其中之精髓。 一、Golang HTTP 标准库示例 使用 golang 启动 http 服务非常简单,就是一个标准的 C…...

Docker的安装、启动和配置镜像加速

前言: Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 而企业部署一般都是采用Linux操作系统,而…...

Linux系统下+jmeter分布式压测

一.配置jdk(Linux机都需配置同一个版本) 下载Linux系统的jdk,下载地址:https://repo.huaweicloud.com/java/jdk/ 下载后的jdk文件上传到 /opt目录下 进入opt目录,查看jdk文件 cd /opt ll 1.解压文件 tar xzvf jd…...

点点点还有没有做下去的必要

大家好,我是洋子,最近工作特别忙,好久没更文章了 因为组织架构调整,原先的组长调离我所在已经3年多的业务线,我就承担起组长的角色了,除了日常跟进需求测试,还跟RD、跨业务线负责人开会&#x…...

uni-app增加home图标,实现回到功能主页(九)

最近在优化一个uni-app项目,项目中有许多设备需要点检,点检完成后可以继续点检;最后导致页面跳转用的是 uni.navigateTo({ url:"/pages/dianjian/dianjian/dianjianInfo?datatype="+this.datatype }); 众所周知,这个会将页面推入堆栈中,结合…...

Android关闭硬件加速对PorterDuffXfermode的影响

Android关闭硬件加速对PorterDuffXfermode的影响 跑的版本minSdk33 编译SDK34 import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Port…...

排序-插入排序与选择排序

插入排序 基本思想 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 打扑克牌整理手牌用的就是插入排序的思想 代码实现 void InsertSort(int* a, int n) { assert(a); …...

【前端每日基础】day33——响应式布局

响应式布局是一种网页设计的方法,它可以使网站在不同的设备上(如桌面电脑、平板电脑、手机等)以及不同的屏幕尺寸上呈现出最佳的显示效果。响应式布局的目标是使用户在任何设备上都能够方便地访问和浏览网站,而不需要使用不同版本…...

leetcode 2981.找出出现至少三次的最长子特殊字符串(纯哈希表暴力)

leetcode 2981.找出出现至少三次的最长子特殊字符串(传送门) class Solution { public:int maximumLength(string s) {int hash[30][52] { 0 },len 1,maxn0;char last A;for (char ch : s) {if (ch last) len;else len 1;for (int i len; i > …...

集成算法实验与分析(软投票与硬投票)

概述 目的:让机器学习效果更好,单个不行,集成多个 集成算法 Bagging:训练多个分类器取平均 f ( x ) 1 / M ∑ m 1 M f m ( x ) f(x)1/M\sum^M_{m1}{f_m(x)} f(x)1/M∑m1M​fm​(x) Boosting:从弱学习器开始加强&am…...

网络数据库后端框架相关面试题

面试是工作的第一步,面试中面试官所提出的问题千奇百怪,其中关于网络数据库后端框架面试题汇总如下: 1,关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…...

模拟集成电路(6)----单级放大器(共源共栅级 Cascode Stage)

模拟集成电路(6)----单级放大器(共源共栅级 Cascode Stage) 大信号分析 对M1 V x ≥ V i n − V T H 1 V x V B − V G S 2 V B ≥ V i n − V T H 1 V G S 2 V_{x}\geq V_{in}-V_{TH1}\quad V_{x}V_{B}-V_{GS2}\\V_{B}\geq V_{in}-V_{TH1}V_{GS2} Vx…...

docker以挂载目录启动容器报错问题的解决

拉取镜像: docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2 创建实例: mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasti…...

MySQL—函数—流程控制函数(基础)

一、引言 接下来,我们就进入函数的最后一个部分:流程函数。而流程控制函数在我们的日常开发过程是很有用的。 流程控制函数在我们 sql 语句当中,经常用来实现条件的筛选,从而提高语句的一个执行效率。 我们主要介绍以下4个流程控…...

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…...

Jenkins、GitLab部署项目

1、安装JDK 1.1、下载openJdk11 yum -y install fontconfig java-11-openjdk1.2、查看安装的版本号 java -version1.3、配置环境变量 vim /etc/profile在最底部添加即可 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 export PATH$JAVA_HOME/…...

21.Redis之分布式锁

1.什么是分布式锁 在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题. ⽽ java 的 synchronized 或者 C 的 std::mutex, 这样的锁都是只能在当前进程中⽣效, 在分布式的这种多…...

Mysql基础学习:mysql8 JSON字段查询操作

文章目录 一、查询JSON中某个属性值为XXX的数据量1、方式一2、方式二 二、查询的JSON中的value并去除双引号 一、查询JSON中某个属性值为XXX的数据量 1、方式一 select count(*)from table_namewhere JSON_CONTAINS(json-> $.filed1, "xxx")or JSON_CONTAINS(jso…...

搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)

上一篇:搭建基于Django的博客系统增加广告轮播图(三) 下一篇:基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五) Sqlite3数据库迁移到MySQL 数据库 迁移原因 Django 的内置数据库 SQL…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...