【MySQL】事务的概念、特性及其分类

如果我错了也承担,认定这就是答案,就算有人嘲笑我极端 —— 2022/11/14

一. 事务是什么?

1. 概述

事务就是可简单可复杂 SQL 语句,其是访问并更新数据库中各种数据项的一个程序执行单元,目的是保证在事务中的操作要么都做修改,要么都不做修改

事务具有严格的定义,必须同时满足四个特性,也就是我们常说的 ACID 标准(数据库厂商出于各种目的,并不一定严格的满足事务的ACID标准,这可能不会带来严重的后果,反而会带来性能的提升,但是 MySQL 的 InnoDB 存储引擎完全遵循和满足事务的 AICD 特性),关于事务 ACID 的具体介绍如下:

  • A (Atomicity | 原子性): 原子性是指整个数据库事务是不可分割的工作单位,只有所有数据库操作都执行成功,才算整个事务成功。事务中任何一个语句执行失败,已经执行成功的语句也必须撤销,数据库退回为执行事务前的状态。
  • C (consistency | 一致性): 一致性是指事务将数据库由一种状态转变为下一种一致的状态。事务开始前和事务结束后,数据库的完整性约束没被破坏。—— 比如:表中有一个字段为姓名,其是唯一约束(要求其在表中不能重复),如果一个事务对姓名字段进行了修改,但在事务提交时,表中的姓名字段变得非唯一了,这就破坏了事务的一致性要求。
  • I (isolation | 隔离性):隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离,该事务提交前对其他事务都不可见。隔离性又被称为并发控制、可串行化、锁等。
  • D (durability | 持久性):持久性指事务一旦提交其结果就算永久的,即使发生宕机等故障,数据库也能将数据恢复。这里要注意,持久性只能保证数据库本身发生故障时数据的恢复,对外部原因造成的故障其不能保证数据的恢复,其保证的是事务系统的高可靠性,而不是高可用性。
2. 分类

(1)扁平事务

事务类型中最简单的一种,在扁平事务中,所有操作都处于同一层次,要么都执行,要么都回滚,其主要限制是不能提交或者回滚事务的一部分

(2)带有保存点的扁平事务

带有保存点的扁平事务除了支持扁平事务支持操作外,允许事务在执行过程中回滚到同一事务中较早的一个状态

(3)链事务

链事务可视为保存点模式的一种变种。带有保存点的扁平事务,当系统发生奔溃时,所有的保存点都会丢失。链事务链事务的回滚只限于当前事务,即其只能恢复到最近的一个保存点。

链事务的思想是:在提交一个事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务。注意,提交事务操作和开始下一个事务操作将合并为一个原子操作。这意味着下一个事务将看到上一个事务的结果,就好像在一个事务中进行的一样。

在这里插入图片描述

(4)嵌套事务

嵌套事务是层次架构框架,由顶层事务控制各个层次的事务。

在这里插入图片描述

(5)分布式事务

分布式事务指在分布式环境下允许的扁平事务,因此需要根据数据所在位置访问网络中的不同节点。

MySQL 的 InnoDB 存储引擎除了不支持嵌套事务(可用带保存点的扁平事务模拟串行的嵌套事务),其他四种事务都支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值