数据库是怎么做到事务回滚的呢?

news2024/9/28 9:28:41

在这里插入图片描述
数据库实现事务回滚的原理涉及到数据库管理系统(DBMS)如何维护事务的一致性和持久性。

基本原理:

  • ACID属性:事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)是数据库管理系统确保数据完整性和一致性的基本特性。在这些属性中,原子性和持久性是与事务回滚密切相关的。

  • 日志记录:数据库管理系统通过事务日志(Transaction Log)来记录所有事务的操作,包括事务开始、数据修改操作以及事务提交或回滚等信息。事务日志记录了事务的所有操作,在事务提交之前,将修改操作记录在日志中,以便在事务回滚时进行恢复。

  • Undo日志:当事务执行修改操作时,数据库会在事务日志中记录相应的Undo日志,用于在事务回滚时撤销事务所做的修改。Undo日志记录了事务对数据的修改操作,以及恢复这些修改所需的信息,包括修改前的数据值等。

  • 回滚操作:当事务发生错误或者用户显式地执行回滚操作时,数据库管理系统会根据事务日志中的Undo日志信息,逆向执行相应的撤销操作,将事务所做的修改全部撤销,恢复数据库到事务开始之前的状态。这样可以保证事务的原子性,即要么全部执行成功,要么全部回滚。

  • 持久化存储:数据库管理系统通常将事务日志和Undo日志等信息存储在持久化存储介质(如硬盘)上,以确保即使系统发生故障或者断电等情况,日志信息也不会丢失,可以通过回放日志来恢复数据并保证事务的持久性。

数据库的日志 undo log,redo log,bin log

Undo Log(回滚日志):
作用: 记录事务对数据库进行的修改操作的“逆操作”,即撤销操作,用于事务回滚或数据库系统崩溃恢复。
特点: 通常是在数据页上记录旧值,用于在事务回滚或系统崩溃恢复时,将数据恢复到事务开始之前的状态。
应用场景: 用于支持数据库的事务性操作,保证事务的原子性和一致性。

Redo Log(重做日志):
作用: 记录事务对数据库进行的修改操作的“正向操作”,即重做操作,用于在数据库系统崩溃后恢复数据到事务提交之后的状态。
特点: 通常是在日志文件中记录修改操作的“影子拷贝”,用于在系统崩溃后重新执行事务提交之前的修改操作,以确保事务的持久性。
应用场景: 用于数据库系统的崩溃恢复和恢复到最新的一致状态,以保证数据的持久性。

Binlog(二进制日志):
作用: 记录数据库中所有的修改操作,包括数据修改、DDL语句、数据导入导出等,用于数据备份、主从复制和数据恢复等。
特点: 通常是以二进制格式记录数据库的修改操作,可以通过日志解析工具将其解析为SQL语句或者进行数据恢复操作。
应用场景: 用于数据库的备份和恢复、主从复制、数据同步等场景,可以保证数据的一致性和可用性。

Undo Log记录了事务的“逆操作”,Redo Log记录了事务的“正向操作”,而Binlog记录了数据库的所有修改操作,它们分别用于支持事务的原子性和一致性、数据库系统的崩溃恢复以及数据库的备份和恢复等功能。

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

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

相关文章

Elasticsearch从入门到精通-07ES底层原理学习

Elasticsearch从入门到精通-07ES底层原理和高级功能 👏作者简介:大家好,我是程序员行走的鱼 📖 本篇主要介绍和大家一块学习一下ES底层原理包括集群原理、路由原理、分配控制、分配原理、文档分析原理、文档并发安全原理以及一些高…

【热门话题】ECMAScript vs JavaScript:理解两者间的联系与区别

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 ECMAScript vs JavaScript:理解两者间的联系与区别1. ECMAScript&am…

创建一个vue3 + ts + vite 项目

vite 官网: https://cn.vitejs.dev/guide/ 兼容性注意 Vite 需要 Node.js 版本 18,20。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 安装项目 1. 使用n…

【Redis主从架构。主从工作原理psync、bgsave、部分数据复制、主从复制风暴解决方案】【Redis哨兵高可用架构。sentinel】

Redis主从架构 Redis主从工作原理数据部分复制 Redis哨兵高可用架构client连接哨兵规则主节点挂了,集群从新选择主节点,并且同步给sentinel 转自图灵课堂 redis主从架构搭建,配置从节点步骤: 1、复制一份redis.conf文件2、将相关…

基于java+springboot+vue实现的成都旅游网系统(文末源码+Lw+ppt)23-358

摘 要 人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。 利用电脑网络的这些便利,发展一套成…

Linux系统使用Docker部署MongoDB数据库并实现无公网IP远程访问

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署Mon…

Linux Php 连接 SAP Hana数据库客户端

下载地址 : SAP Development Tools https://tools.hana.ondemand.com/#hanatools 进入hanaclient-2.19.21-linux-x64 无需编译,运行 ./hdbinst 提示没有权限,执行chmod x * 有个子目录里面的也是没有权限,进入那个子目录 执行chmod …

通过测量扭矩和转角法评估紧固件的连接质量——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 扭矩转角法是一种用于测量材料力学性能和评估紧固件连接质量的重要方法。其原理基于材料在受到扭矩作用时产生的弹性变形和塑性变形,通过测量施加在紧固件上的扭矩和对应的转角关系,来推断材料的…

浅模仿小米商城布局(有微调)

CSS文件 *{margin: 0;padding: 0;box-sizing: border-box; }div[class^"h"]{height: 40px; } div[class^"s"]{height: 100px; } .h1{width: 1528px;background-color: green; } .h11{background-color:rgb(8, 220, 8); } .h111{width: 683px;background-c…

PLC/FA 电机信号隔离控制模拟信号数据隔离采集变换分配器0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级:0.1级、0.2级。产品出厂前已检验校正,用户可以直接使用 >>辅助电源:5V/12V/15V/24VDC(范围10%) >>国际标准一路信号输入:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等 >>…

【详细讲解React 快速入门教程】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

稀碎从零算法笔记Day26-LeetCode:跳跃游戏

断更多天,懒狗ex 题型:数组、模拟、类似双指针? 链接:55. 跳跃游戏 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组…

JAVA批量下载

环境: JDK:1.7.0_80 tomcat:7.0.47 工程截图: 1.布署到tomcat 2.在浏览器中访问 启用数据库支持 启用数据库后下载信息将会保存在数据库中。在关闭重启浏览器后仍然可以继续下载。 将“DataBase”配置为true则为启用数据库支持 使用mysql文件夹下的脚…

【算法刷题】链表笔试题解析(1)

一、链表分割 题目描述: 链接:链表分割 题目分析: 这题直接处理并不好做,我们可以构建前后两个链表,将小于x值的结点放在链表a内,将其它结点放在链表b内,这样将原链表遍历完后,原链…

FKSS型煤层注水封孔器向光而行

要保持自己喜欢的样子 不要随波逐流 也不要过度失落 温柔的人 会有一个好的结局 结构特点 封孔器是由注水喷头、固定螺母管芯、单向阀、膨胀胶管、扣压外套、扣压芯子、注水连接体组成。 水分注入煤体,能湿润和破碎煤体,释放部分瓦斯,降低煤…

TreeMap集合 -java学习笔记

TreeMap TreeMap (由键决定特点):按照键的大小默认升序排序、不重复、无索引特点:不重复、无索引、可排序(按照键的大小默认升序排序,只能对键排序)原理:TreeMap跟TreeSet集合的底层原理是一样的,都是基于红黑树实现的排序 TreeSet&#xff…

zabbix分布式部署

基于zabbix-proxy的分布式监控 1.1 分布式监控的作用 1)分担 server 的集中式压力; 2)解决多机房之间的网络延时问题。 1.2 数据流向 agent --> proxy --> server 1.3 构成组件 zabbix-server:整个监控体系中最核心的组…

Mudbox 2025新版中文---数字雕刻与纹理绘画新境界

Mudbox 2025是一款功能强大的3D建模软件,以其卓越的建模能力和高效的创作工具而备受瞩目。它支持纹理烘烤、三维层、多分辨率网格编辑等功能,为用户提供了直观且易于操作的用户界面。 Mudbox 2025新版中文下载 功能特色: 强大的建模与雕刻能…

PaddleOCR环境搭建、模型训练、推理、部署全流程(Ubuntu系统)

OCR场景应用集合:包含数码管、液晶屏、车牌、高精度SVTR模型、手写体识别等9个垂类模型,覆盖通用,制造、金融、交通行业的主要OCR垂类应用。 ​ 一、PaddleOCR环境搭建 ​ conda create -n ppocr python3.8​conda activate ppocr 进入paddle…

如何在Windows通过eXtplorer结合cpolar搭建个人文件服务器并实现无公网ip远程访问

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件,是互联网最重要的应用之一,无论是…