InnoDB存储引擎——事务原理

news2024/9/24 7:15:32

1.什么是事务

在这里插入图片描述
在这里插入图片描述

2.redo log

在这里插入图片描述
脏页是指缓冲区的数据与磁盘中的数据不一致时的状态。脏页的数据并不是实时刷新的,而是一段时间之后通过后台线程把脏页的数据刷线到磁盘,假如说脏页的数据在往磁盘中刷新的时候出错了,内存中的数据没有刷新到磁盘当中,事务已经提交,且已经告诉用户事务已经提交成功了,但是最终在脏页刷新的时候失败了,那么这时持久性就没有得到保障。
在这里插入图片描述

当redo log出现之后 它的流程是什么样的呢??

当我们对缓冲区的数据进行了增删改之后,它首先会把增删改的数据记录到redo log buffer当中,在redo log buffer当中就会记录数据页的物理变化。当事务提交的时候,重做日志也就是redo log buffer会把数据页变化文件(log日志文件)直接刷新到磁盘当中,持久化保存到磁盘文件当中。过段时间之后在进行脏页刷新的时候出错了,可以通过redo log进行恢复。这就是redo log的作用,redo log当中就记录了当此数据的变化。

redo log主要就是脏页刷新数据到磁盘发生错误的时候,恢复数据用的,为什么每次提交不直接将buffer pool当中的脏页数据直接刷新到磁盘 而是刷新redo log中的日志文件??

这是由于每次提交的时候 不需要redo log,直接将buffer pool中的文件刷新到磁盘当中,可以这么做但是存在严重的性能问题,因为在事务当中进行一组操作的时候,通常会操作很多条记录,这是都是在随机地操作数据页,这个时候就会存在大量的随机磁盘io,性能较差,如果在操作中用到redo log,事务提交后先把redo log 日志文件刷新到磁盘当中,由于它是log日志文件,日志文件都是追加的,它此时是顺序磁盘io,它的性能高于随机磁盘io,这种机制叫做WAL(write-ahead-logging)先写日志。

如果脏页中的数据顺利地刷新到磁盘当中了,redo log所记录的数据变更就不需要了,所以每个一段时间就会清理redo log日志。
在这里插入图片描述

3.undo log

在这里插入图片描述

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

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

相关文章

Java8实战-总结11

Java8实战-总结11 Lambda表达式方法引用管中窥豹如何构建方法引用 构造函数引用 Lambda表达式 方法引用 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下,比起使用Lambda表达式,它们似乎更易读,感…

代码随想录算法训练营第二十九天 | Leetcode随机抽题检测

Leetcode随机抽题检测 160 相交链表未看解答自己编写的青春版重点题解的代码206 反转链表 一段用于复制的标题未看解答自己编写的青春版重点题解的代码日后再次复习重新写 234 回文链表未看解答自己编写的青春版重点综上,利用快慢指针找寻链表中间,就按加…

【C++】总结9

文章目录 C从源代码到可执行程序经过什么步骤静态链接和动态链接类的对象存储空间C的内存分区内存池在成员函数中调用delete this会出现什么问题?如果在类的析构函数中调用delete this,会发生什么? C从源代码到可执行程序经过什么步骤 预处理…

Tomcat 创建https

打开CMD,按下列输入 keytool -genkeypair -alias www.bo.org -keyalg RSA -keystore d:\ambition.keystore -storetype pkcs12 输入密钥库口令:123456 再次输入新口令:123456 您的名字与姓氏是什么? [Unknown]: www.ambition.com 您的组织单位名称是什么? [Unknown…

Qt 编译 Android 项目,输出乱码

乱码如下: :-1: error: 娉 C:\Qt\6.5.0\android_arm64_v8a\src\android\java\src\org\qtproject\qt\android\bindings\QtActivity.java浣跨敤鎴栬鐩栦簡宸茶繃鏃剁殑 API銆 娉 鏈夊叧璇︾粏淇℃伅, 璇蜂娇鐢-Xlint:deprecation 閲嶆柊缂栬瘧銆 正确的应该是&#…

qemu kvm 新建虚拟机

开始菜单打开虚拟机管理器

HDFS集群滚动升级以及回滚相关

HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级(downgrade)注意事项 集群回滚操作 介绍 在hadoop v2中,HDFS支持namenode高可用(H…

neo4j使用中的常见问题

1Spring Boot NEO The client is unauthorized due to authentication failure 解决方法:找到你安装neo4j的路径下的conf文件夹,找到neo4j.conf #dbms.security.auth_enabledfalse将前面的注释#去掉,然后重启neo4j,在重启项目即…

el-cascader级联选择器加载远程数据、默认开始加载固定条、可以根据搜索加载远程数据。

加载用户列表分页请求、默认请求20条数据。想添加远程搜索用户功能。原有的方法filter-method不能监听到输入清空数据的时候。这样搜索完无法返回默认的20条数据。直接监听级联选择的v-model绑定的值是无法检测到用户自己输入的。 解决思路: el-cascader 没有提供…

屏蔽托盘右键菜单

最近有个需求需要屏蔽托盘图标的右下角菜单项: 经过Apimonitor进行hook Explorer进程,发现弹出菜单是通过explorer调用InserMenuItem函数来实现的。通过注入explorer并挂钩InserMenuItemW函数,并屏蔽自己想要屏蔽的菜单项: &#…

2023-08-01 LeetCode每日一题(英雄的力量)

2023-08-01每日一题 一、题目编号 2681. 英雄的力量二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums ,它表示英雄的能力值。如果我们选出一部分英雄,这组英雄的 力量 定义为: i0 ,i1 &…

【ARM Coresight 系列文章 2.5 - Coresight 寄存器:PIDR0-PIDR7,CIDR0-CIDR3 介绍】

文章目录 1.1 JEDEC 与 JEP1061.2 PIDR0-PIDR7(peripheral identification registers)1.2 CIDR0-CIDR3(Component Identification Registers) 1.1 JEDEC 与 JEP106 JEDEC和JEP106都是来自美国电子工业联合会(JEDEC,Joint Electron Device Engineering C…

Kafka3.0.0版本——Broker(总体工作流程)

目录 一、Kafka中Broker总体工作流程图解二、Kafka中Broker总体工作流程步骤解析 一、Kafka中Broker总体工作流程图解 总体工作流程图解 二、Kafka中Broker总体工作流程步骤解析 1、broker启动后在zk中注册,如下图所示: 2、controller谁先注册&…

Java面向对象之UML类图

UML类图 表示 public 类型, - 表示 private 类型,#表示protected类型方法的写法:方法的类型(、-) 方法名(参数名: 参数类型):返回值类型

Windows下安装Spark(亲测成功安装)

Windows下安装Spark 一、Spark安装前提1.1、JDK安装(version:1.8)1.1.1、JDK官网下载1.1.2、JDK网盘下载1.1.3、JDK安装 1.2、Scala安装(version:2.11.12)1.2.1、Scala官网下载1.2.2、Scala网盘下载1.2.3、…

3DEXPERIENCE用户角色 | Structural Mechanics Engineer 结构力学工程师

真实条件下实施复杂的线性和非线性分析 直观验证设计并更快地做出产品决策 Structural Mechanics Engineer 在基于云的 3DEXPERIENCE 平台上构建,您可对产品行为执行结构线性和非线性静态、低速和高速动态和热仿真。具备材料校准功能,有助于确保材料行为…

wine意大利红酒数据标准化案例

1.数据和环境准备 将通过意大利红酒的部分数据,调用scikit-learn包(sklearn)分别实现0-1标准化和z-score标准化,总结学习这两种标准化方法的特点。 本案例使用的环境为Anaconda Jupyter notebook。 2.数据说明 我们使用的是U…

基于FPGA的超声波测距——UART串口输出

文章目录 前言一、超声波模块介绍1、产品特点2、超声波模块的时序图 二、系统设计1、系统模块框图2、RTL视图 三、源码1、div_clk_us(1us的分频)2、产生驱动超声波的信号3、串口发送模块4、HC_SR04_uart(顶层文件) 四、效果五、总结六、参考资料 前言 环境: 1、Quar…

linux安装python和部署Django项目

文章目录 1 python安装2 Django项目部署 1 python安装 官网地址:https://www.python.org/ 本次下载的python安装包地址:https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz 解压下载的python压缩包 [rootlocalhost software]# tar -zxvf P…

Python(五十五)列表元素的修改操作

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…