事务的ACID是什么及扁平化事务、链式事务

一、什么是事务

1.事务(Transaction)是区别于数据库文件系统的重要特性之一。事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以确保要么所有修改都已经保存,要么所有修改都不保存。

2.InnoDB存储引擎中的事物完全符合ACID的特性。

  • 原子性(atomicity)

  • 一致性(consistency)

  • 隔离性(isolation)

  • 持久性(duration)

3.事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不做,这就是事物的目的。

二、ACID的具体描述

4.具体介绍事物的ACID特性:

  • Atomicity:原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。

  • Consistency:一致性指将事务从数据库从一种状态转变为下一种一致状态。在事务开始之前和结束以后,数据库的完整性约束没有被破坏。【实体完整性(Primary key/Unique)、参照完整性(Foreign Key)、域完整性(Not Null /check)、用户自定义完整性(Trigger/Assertion】

  • Isolation:(别名:并发控制(concurrency control)、可串行化(serializability)、锁(locking))事务的隔离性要求每个读写事务的对象对其他事务的操作对象能相互分离,即该事务提交前对其他事务都不可见。

  • Durability:事务一旦提交,其结果就是永久性的。即使发生宕机等故障,数据库也能将数据恢复。只能从事务本身的角度来保证结果的永久性。【持久性保证的是事务系统的高可靠性(High Reliability),而不是高可用性(High Availability)。

三、事务的分类

  • 扁平事务(Flat Transactions)

  • 带有保存点的扁平事务(Flat Transaction with Savapoints)

  • 链事务(Chained Transactions)

  • 嵌套事务(Nested Transactions)

  • 分布式事务(Distributed Transactions)

扁平事务:是事务类型中最简单的一种,但实际生产环境中,这可能是使用最频繁的事物。主要限制:不能提交或者回滚事务的某一部分,或分几个步骤提交。

【注:带有保存点的扁平事务,当发生系统崩溃时,所有的保存点都将消失,因为其保存点是易失的(volatile),而非持久的(persistent)。这意味着当进行数据恢复时,需要从开始处重新执行,而不能从最近的一个保存点继续开始。】

带有保存点的事务:除了支持扁平事务支持的操作外,允许在事务执行过程中回滚到同一事务中较早的一个状态。【保存点Savepoint:用来通知系统应该记住事务当前的状态,以便当发生错误时,事务能回到保存点当时的状态。保存点能用作内部的重启动点,根据应用逻辑,决定是回到最近一个保存点还是其他更早的保存点。】

链事务:可视为保存点模式的一个变种。在提交一个事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务。【提交事务操作和开始下一个事务操作将合并为一个原子操作。】

【注:带有保存点的扁平事务能回滚到任意正确的保存节点,且不影响迄今为止的所有锁;而链事务中的回滚仅限于当前事务,即只能恢复到最近一个的保存点,且在执行COMMIT后即释放了当前事务所持有的锁。】

嵌套事务:是一个层次框架。有一个顶层事务(Top-level transation)控制着各个层次的事务。顶层事务之下嵌套的事务被称为子事务(subtransaction),其控制每一个局部的变换。【任何子事务都在顶层事务提交后才真正提交】

分布式事务:通常是一个在分布式环境下运行的扁平事务,因此需要根据数据所在位置访问网络中的不同节点。

推荐一本书:《MySQL技术内幕InnoDB存储引擎》姜承尧(著)

上述图片来自:https://github.com/asdbex1078/MySQL

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

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

相关文章

详解HTML

目录 1.HTML 结构 1.1认识HTML标签 1.2标签层次结构 1.3快速生成代码框架 2.HTML常见标签 2.1注释标签 2.2标题标签:h1-h6 2.3段落标签:p 2.4换行标签:br 2.5格式化标签 2.6图片标签:img 2.7超链接标签 2.8表格标签…

全域运营是本地生活的下半场?新的创业风口来了?

随着全域概念的兴起,全域运营赛道也逐渐进入人们的视野之中,甚至有业内人士预测,全域运营将会是本地生活下半场的大趋势。 之所以这么说,是因为全域运营作为包含了公域和私域内所有运营业务的新模式,不仅能同时做所有本…

设计模式-解释器模式

作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 定义 解释器模式(Interpreter Pattern&…

Nginx企业级负载均衡:技术详解系列(9)—— Nginx核心配置详解(全局配置)

你好,我是赵兴晨,97年文科程序员。‍‍‍‍‍ 在 Nginx企业级负载均衡:技术详解系列(8)—— Nginx核心配置详解(默认配置文件)文章中,咱们讨论了Nginx核心配置文件的基础知识&#…

STM32控制HC-SR04超声模块获取距离

欢迎入群共同学习交流 时间记录:2024/5/23 一、模块介绍 (1)引脚介绍 VCC:电源引脚,接单片机3.3/5V GND:电源地 Trig:超声信号触发引脚 Echo:超声信号接收引脚 (2&…

给你一把接口响应断言神器,你要不要?

JSON Schema是用来标记和校验JSON数据,类似于XMLSchema,可用在自动化测试验证JSON数据。 官网:http://json-schema.org/ 最常用版本:draft 04。(目前各类编程语言对draft 04支持最广泛) 举个例子 假如你有一个接口…

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋 😍😍🤩🤩 译者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名为旅人&…

智能进化:让AI大模型变得更聪明的路径探索

前言 随着人工智能(AI)技术的飞速发展,大模型在多个领域展现出了前所未有的能力。然而,它们仍然面临着理解力、泛化能力和适应性等方面的挑战。如何让大模型变得更聪明,是当前AI研究和应用的一个重要课题。本文将探讨…

解除网页禁止选择

控制台输入以下命令 复制:javascript:void(document.body.οncοpy) 可选:javascript:void(document.body.onselectstart) 拖拉:javascript:void(document.body.οnmοuseup)

C++实现基于http协议的epoll非阻塞模型的web服务器框架(支持访问服务器目录下文件的解析)

使用方法: 编译 例子:./httpserver 9999 ../ htmltest/ 可执行文件 端口 要访问的目录下的 例子:http://192.168.88.130:9999/luffy.html 前提概要 http协议 :应用层协议,用于网络通信,封装要传输的数据&…

npm install [Error]

npm install 依赖的时候报错 依赖版本问题的冲突,忽视即可 使用 npm install --legacy-peer-deps

剪画小程序:3个分离人声提取小技巧,赶紧收藏起来吧!

Hello!大家好呀!这里是社会主义搬砖人小画! 人声分离,是指将混合在一起的人声和其他声音(如背景音乐、环境噪音等)分离开来,提取出单独的人声部分的过程。 在实际应用中,人声分离技…

Unity 开发Hololens,制作面板跟随眼镜一起移动,(面板跟踪)

Hololens滑动框以及面板跟踪 创建空物体,并添加组件 SolverHandler、RedialView、FollowMeToggle 创建按钮,控制停止/开始跟踪 创建一个Hololens自带的按钮放到右上角,并添加事件 创建蓝色背景板 创建空物体Backplate,下面再…

个体因果效应估计|EDVAE:用于个体治疗效果估计的反事实推理中的解开潜在因素模型

【摘要】根据观察数据估计个体治疗效果(ITE)是一项至关重要但具有挑战性的任务。解缠结表示已用于将代理变量分为混杂变量、工具变量和调整变量。然而,根据观测数据准确地进行反事实推理来识别 ITE 仍然是一个悬而未决的问题。在本文中&#…

AppInventor2要在界面上做一个电量图标,有什么好的思路吗?

问:要在界面上做一个电量图标,有什么好的思路吗? 答:首先,很容易想到使用进度条相关的组件,原生”滑动条“组件可以吗? 答案显而易见,首先它的样式自定义不够,UI不外乎上…

STM32_ADC

1、ADC简介 ADC,即Analog-Digital Converter,模拟-数字转换器。 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。 12位逐次逼近型ADC,1us转换时间。 输入电压范围:0~3.3…

P6【力扣144,94,145】【数据结构】【二叉树遍历】C++版

【144】二叉树的前序遍历 1、递归法&#xff1a; class Solution { public:void preorder(TreeNode* root, vector<int> &res){if(root nullptr){return;}res.push_back(root->val);preorder(root->left, res);preorder(root->right, res);}vector<in…

CVE-2020-7982 OpenWrt 远程命令执行漏洞学习(更新中)

OpenWrt是一款应用于嵌入式设备如路由器等的Linux操作系统。类似于kali等linux系统中的apt-get等&#xff0c;该系统中下载应用使用的是opgk工具&#xff0c;其通过非加密的HTTP连接来下载应用。但是其下载的应用使用了SHA256sum哈希值来进行检验&#xff0c;所以将下载到的数据…

weblogic简介

WebLogic是美国Oracle公司出品的一个Application Server&#xff0c;它是一个基于JAVA EE架构的中间件。WebLogic主要用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。它将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的…

什么是安全左移如何实现安全左移

文章目录 一、传统软件开发面临的安全挑战二、什么是安全左移四、安全左移与安全开发生命周期&#xff08;SDL&#xff09;三、安全左移对开发的挑战五、从DevOps到DevSecOps六、SDL与DevSecOps 一、传统软件开发面临的安全挑战 传统软件开发面临的安全挑战主要包括以下几个方…