【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)分布式事务

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

二、事务的实现

1. redo
2. undo
3. purge
4. group commit

三、事务控制语句

四、隐式提交的 SQL 语句

五、对于事务操作的统计

六、事务的隔离级别

七、分布式事务

1. MySQL 数据库分布式事务、
2. 内部 XA 事务

八、不好的事务习惯

1. 循环中提交
2. 使用自动提交
3. 使用自动回滚

九、长事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值