undo log 和 redo log的区别

undo log 和 redo log的区别

缓冲池(Buffer Pool)是MySQL用于存储数据页的内存区域,它用于减少对磁盘的读写操作,提高数据库的访问速度。在MySQL中,数据被分为多个固定大小的数据页(通常为16KB),缓冲池通过将这些数据页加载到内存中,使得读取和写入操作可以直接在内存中进行,从而避免了频繁的磁盘I/O操作。缓冲池还可以用于缓存索引页,加快索引的检索速度。

数据页(Data Page)是MySQL中存储数据的最小单位,通常包含一组数据行。每个数据页都有一个唯一的标识符(Page ID),用于在内存中进行索引和查找。当需要读取或写入数据时,MySQL会首先查找数据页是否已经在缓冲池中,如果在,则直接读取或写入内存中的数据页;如果不在,则需要从磁盘加载数据页到缓冲池中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

redo log
在这里插入图片描述

事务开始,mysql将修改记录到redo log中,保证能持久化到磁盘

事务提交会将缓冲区的redo log写入到磁盘,确保修改已经持久化

若系统崩溃或者发生意外,再数据库重启时mysql会读取redo log恢复未完成的事务或者回滚已提交的事务

当数据库需要回放redo log 的时候,它会按照顺序读取redo log 中的记录并应用到对应的数据页上,从而恢复事务的修改

应用完所有redo log的记录后,mysql保证了数据的一致性与持久性,并且数据库恢复到了崩溃之前的状态

undo log

回滚日志,用于记录数据被修改前的信息,提供回滚和mvcc(多版本并发控制)。undo log 和redo log不同,undo log 记录的是逻辑日志
在这里插入图片描述

总结

MjoiZ-1706872364836)]

总结
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Golang入门教程】如何使用Goland创建并运行项目

自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工…

算法篇之二分

二分算法简介 特点 最简单的一种算法,也是最恶心,细节最多,最容易写出死循环的算法时间复杂度O(logN) 如何学习 明白其中的算法原理,二分并不是只有数组有序的的时候使用,而是看是否具有二段性。模板 朴素的二分模…

JDK版本如何在IDEA中切换

JDK版本在IDEA中切换 一、项目结构设置 1.Platform——Settings 项目结构---SDKS 2.Project——SDK 3.Modules——SDK——Sources 4.Modules——SDK——Dependencies 二、设置--编译--字节码版本 Settings——Build,——Java Compiler

【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?

这样,你先在网上找一套完整openssh升级方案(不是yum或apt的,要源码安装的),然后在虚拟机上反复安装测试,直到把他理解了、背下来。 面试的时候让你简单说说linux命令什么的,你就直接把这个方案…

Linux 网络配置及基础服务

目录 一. 查看网络配置信息的相关命令 1.1 ifconfig 命令 作用 1: 作用 2: 拓展: 1.2 ip/ethtool命令 1.3 hostname命令 1.4 route 命令 1.5 netstat 命令 1.6 ss(socket statistics)命令 1.7 ping 命令 …

接口自动化处理动态参数

接口自动化处理动态参数 1、流程说明 某些接口的请求入参数据不能写死,需要动态传参。如用户注册接口,用户名需要动态生成。使用yaml编写测试数据时,在需要动态参数的数据后面添加上特殊字符${生成动态数据的方法名(参数&#x…

网工内推 | 港企、合资公司,厂商认证优先,五险一金

01 九龙仓(长沙)置业有限公司 招聘岗位:IT网络工程师 职责描述: 1.负责公司网络架构规划设计、设备选型、远程组网方案的规划和设计; 2.负责公司网络IP地址规划管理,根据业务需求和公司状况,对…

推荐收藏!算法工程师面试常考的手撕面试题!

今天给大家分享一些算法工程师技术面试中常手撕的代码。 不管是秋招还是社招,互联网大厂的技术面试中的手撕代码这一部分总是绕不过去的一关。 如果你对这些感兴趣,可以文末找我们交流 手撕 numpy写线性回归的随机梯度下降(stochastic gra…

微信小程序 安卓/IOS兼容问题

一、背景 在开发微信小程序时,不同的手机型号会出现兼容问题,特此记录一下 二、安卓/IOS兼容问题总结 2.1、new Date()时间转换格式时,IOS不兼容 问题:在安卓中时间格式2024-1-31 10:10:10,但是在iOS中是不支持 &q…

模板讲解之进阶

在之前的C入门的博客中我们就学习到了模板初阶,今天我们来学习模板的进阶,以便于更好地将模板运用到代码中 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的…

Java基础 集合(五)Set详解

目录 简介 set种类 AbstractSet 抽象类 SortedSet 接口 HashSet LinkedHashSet TreeSet 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡&#xff…

【2024.2.2练习】方格取数

题目描述 题目思路 如果从A到B只走一次的话可以用动态规划轻松解决。问题在于会走两次,第二次显然要走获取数字最多的路径,但第一次走哪条路径需要抉择。 错误的思路是以为这道题适合贪心,两次都选择最优路线。可以举出反例。 A2112112B …

Vim编辑器

1.文件复制 拷贝/etc/profile 数据到/root 目录下 cp /etc/profile /root如果root文件夹在上一目录下 cp /etc/profile ../root 2.打开文件 vim etc/profile 打开ect文件夹中的profile文件 3.文件编辑 文件编辑分为一般模式 与编辑模式。打开文件为一般模式,按…

【c语言】strcpy()和strncpy():字符串复制详解

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:c语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&a…

C++ copy()函数详细介绍

copy() 是一个标准库函数,位于 头文件中。它用于将一个容器中的元素复制到另一个容器中,或者将一个范围内的元素复制到另一个范围中。 函数参数介绍 copy( first, last, d_first );first 和 last:表示输入范围的迭代器。 first 指向要复制的…

操作系统基础:内存管理概述【中】

🌈个人主页:godspeed_lucip 🔥 系列专栏:OS从基础到进阶 🏝️1 基本分页存储管理🏖️1.1 总览🏖️1.2 什么是分页存储🏰1.2.1 将物理空间分页🏰1.2.2 将逻辑空间分页&…

Android搭建python环境

通过wifi连接adb: 首先下载无线abd工具: https://www.downkuai.com/android/170494.html 运行效果图: 然后开启后根据自身ip即可连接: adb connect ip:5555 安装busybox: 首先执行如下命令查看手机架构: adb sh…

分布式ID介绍实现方案总结

分布式 ID 介绍 什么是 ID? 日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。 我们现实生活中也有各种 ID&…

[C++]继承(续)

一、基类和派生类对象赋值转换 在public继承时,父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用,我们认为是天然的,中间不产生临时对象,也叫作父子类赋值兼容规则(切割/切片&#xff…

Spring-mybatis

怎样通过Spring整合Mybatis来实现业务 目录 1.导入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency>&l…