InnoDB引擎--事务持久性

article/2025/8/23 19:31:24

事务是指构成单一逻辑工作单元的操作的集合。数据库系统维护事务的ACID四个特性:

  • 原子性:事务的所有操作在数据库中要么全部反映,要么全部不反映。
  • 一致性:事务执行前后数据库保持约束一致性和业务逻辑一致性。
  • 隔离性:在事务并发执行时,各个事务都感觉不到其他事务的存在。
  • 持久性:事务一旦提交,其更改是永久性的,即使数据库系统崩溃也能恢复。

先从持久性说起。

持久性

保证持久性的策略就是Write Ahead Logging。在事务提交之前,备份一份事务的操作日志在磁盘上,备份成功再允许事务成功提交。

InnoDB引擎中支持持久性的是redo log,redo log写入过程如图所示:
这里写图片描述

redo log的写入为顺序循环写入。默认有两个redo log文件,InnoDB顺序写其中一个,写满之后,再顺序写另外一个日志文件,再回过头来写第一个…循环往复。

既然重复利用redo log文件,就涉及到确定哪些日志可以被覆写的问题,InnoDB引擎利用CheckPoint技术来解决这个问题。

CheckPoint


http://chatgpt.dhexx.cn/article/UUomL00X.shtml

相关文章

MySQL 是如何保证一致性、原子性和持久性的!

编辑:业余草 来源:https://www.xttblog.com/?p4891 今天,我们来简单的看一下 MySQL 的一致性、原子性和持久性问题。后面还扩展了 15 个简单的面试题,希望大家喜欢! 1、Mysql怎么保证一致性的? OK&#xf…

MySQL InnoDB 存储引擎写入磁盘(落盘)的原理\MySQL怎么保证持久性、原子性?(MySQL中是如何实现事务提交和回滚的)\隔离性

文章目录 一、MySQL InnoDB 存储引擎写入磁盘(落盘)的原理一条 update 语句在写入磁盘的过程为什么必须有“两阶段提交”呢? binlog 的写入机制 二、MySQL怎么保证持久性、原子性?(MySQL中是如何实现事务提交和回滚的)redo log(重做日志) 如…

MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)

日志的重要性 日志绝对是数据库的核心. 持久化的日志记录了各种重要的信息.数据的恢复需要依赖日志。 慢查询sql语句需要用到慢查询日志。以及错误日志中保存着mysqld数据库服务端在启动过程中发生的重大错误信息... 数据库重要组成 本质上来说是一个文件系统 (两大重要组…

MySQL究竟是如何做到持久性的?

前言 我们学习事务中,对于持久性(durability)是这样定义的:事务一旦提交,则其所有的修改将会保存到数据库当做。即使此时系统崩溃,修改的数据也不会丢失。同时数据库连接中,默认有一个参数auto…

理解事务四大特性(Transaction)——原子性、一致性、隔离性和持久性(ACID)

事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下: 1. 原子性(Atomic) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都…

持久性连接和非持久性连接

HTTP连接有两种,一种为持久性连接;另一种为非持久性连接。 由于不同的HTTP版本,使用不同的方式。 在这里分析一下二者的区别: 一、非持久性连接(Nonpersistent HTTP) 特点:每个TCP连接最多允许传输一个对象 HTTP 1.0使用的非持久性连接 过程: 响应时间分析与建…

mysql事务如何保证持久性_详解MySQL事务持久性实现

所谓MySQL事务持久性就是事务一旦提交,就是永久性的,不会因为宕机等故障导致数据丢失(外力影响不保证,比如磁盘损害)。持久性是保证了MySQL数据库的高可靠性(High Reliability),而不是高可用性(Hign Availability)。 MySQL的innoDB存储引擎,使用Redo log保证了事务的持久性…

Mysql持久性的实现

1、持久性的定义 事务一旦提交,则其所有的修改将会保存到数据库当中。即使此时系统崩溃,修改的数据也不会丢失。同时数据库连接中,默认有一个参数autocommit1(如果想要关掉,要set autocommit0,然后要手动的开启关闭&a…

数据库事务-持久性原理

持久性(Durability): 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。(持久性由redo log日志来保证) 以一个跟新语句执行流为例: 在存储引擎执行时,会先在缓存池…

MYSQL 1251

今天折腾mysql,,一直在连接的时候出现1251的报错,然后百度了很多方法,都没有办法成功,,最后折腾了好久,,终于成功了,进入MySQL 8.0 Command Line Clien,依次输…

java_1125

1。从键盘输入一个字符串 编写一个程序,判断输出一个字符串中大写英文字母数,和小写英文字母数,和其他非英文字母数 2. 编写一个方法,返回一个double类型的二维数组,数组中的元素通过解析字符串参数获得&#xff0c…

java_1115

定义一个接口 MediaPlayer,表示家庭影院的一个设备。MediaPlayer 中 包含 play(),stop(), open()三个方法,分别表示播放、停止和开仓功能。 MediaPlayer 有三个实现类,分别为: DVDPlayer,表示 …

java--Integer的128陷阱

包装类 提到128陷阱就不得先说一下包装类 1.为什么有包装类 在面向对象中,“一切皆对象”,但基本数据类型的数据不太符合这一理念,基本数据类型不是对象.涉及到类型之间的转化,数据类型之间的基本操作;如果都有我们…

P1152 java

package suanfa_xiaoqiang1; import java.util.Arrays; import java.util.Scanner; public class P1152 { public static void main(String[] args) { Scanner sc new Scanner(System.in); int nsc.nextInt(); int[] anew int[n1]; //数组遍历从1开始的时候,要加…

Java(11)

学习来源:日撸 Java 三百行(21-30天,树与二叉树) 第 28 天: Huffman 编码 (节点定义与文件读取) 输入:输入表示文本文件的字符串paraFilename 输出:构造对象tempHuffman并输出文本文件的内容inputText 优…

Java-1110

https://github.com/Lannister-never-pay/JavaWebLearning/tree/main/java1108 因为懒&#xff0c;还是用的1108的module JSP 指令 作用&#xff1a;用于配置JSP页面&#xff0c;导入资源文件 格式&#xff1a;<% 指令名称 属性名1属性值1 属性名2属性值2 %> 多个键值…

Java——详解Integer128陷阱

今天我们来一起探讨一下Java的128陷阱 首先我们通过代码对128陷阱进行一个认知 public static void main(String[] args){Integer a 127 ;Integer b 127 ;Integer c 128 ;Integer d 128 ;Integer e 1000 ;Integer f 1000 ;int a1 127;int b1 127;int c1 128;int d1 …

Java-11

学习来源&#xff1a;日撸 Java 三百行&#xff08;31-40天&#xff0c;图&#xff09;_闵帆的博客-CSDN博客 36 邻接表 36.1 相当于图的压缩存储. 每一行数据用一个单链表存储。 36.2 重写了广度优先遍历. 可以发现, 使用队列的机制不变. 仅仅是把其中的 for 循环换成了 wh…

JAVA101-135

JAVA101-150 字符串StringBuilder链式编程简化代码对应的关系可以使用查表法&#xff0c;通过数组的对应的下表来改变成相应的值 修改字符串字符串变整数重点&#xff1a;字符串变为数组 ArrayList集合的基本使用集合一开始的长度为0&#xff0c;如果用循环&#xff0c;进不去 …

Java-1214

Spring5总体学习内容 Spring基本概念IOC容器AopJdbcTemplate事务管理Spring5新特性 框架概述 Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分&#xff1a;IOC、Aop IOC&#xff1a;控制反转&#xff0c;把创建对象的过程交给Spri…