MySQL事务

本文介绍了事务的概念,包括原子性、一致性、隔离性和持久性,并详细说明了InnoDB引擎如何通过redolog、undolog、MVCC和锁机制来确保这些特性。以转账为例,展示了事务在现实生活中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务是一组操作的集合,这些操作必须作为⼀个不可分割的单元执⾏,即要么全部执⾏成功,要么全部失败回滚。事务通常涉及到对数据库中的数据进⾏读写操作。

事务的 ACID 特性指四个关键特征:

原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  • 原子性(Atomicity):事务是⼀个原⼦操作,要么全部提交,要么全部回滚。当⼀个事务执⾏期间发⽣故 障,操作系统会⾃动将其回滚到事务执⾏之前的状态,保证数据的⼀致性。
  • ⼀致性(Consistency):事务执行结束后,数据必须保持⼀致性状态。在事务执⾏期间,数据库中的数据可 以处于中间状态,但在事务完成时必须保证数据的⼀致性。
  • 隔离性(Isolation):数据库系统必须保证事务之间相互隔离,不会互相⼲扰。隔离级别不同,会影响到事务的并发性和数据⼀致性,⽐如出现脏读、不可重复读、幻读等问题。
  • 持久性(Durability):⼀旦事务提交,其所做的修改必须永久保存到数据库中。即使系统发⽣故障或宕机,数据也能够保持不变。

例子:

A 向 B 转账 500,转账成功,A 扣除500块,B增加了500块,

  • 原子操作体现要么都成功,要么都失败
  • 在转账的过程中,数据要一致,A 扣除了500,B就必须增加500
  • 在转账的过程中,隔离性体现在A 向 B 转账,不能受其他的事务干扰
  • 在转账的过程中,持久性体现在事务提交后,要把数据持久化

InnoDB 引擎通过什么技术来保证事务的这四个特性的呢?

  • 持久性是通过 redo log (重做日志)来保证的;
  • 原子性是通过 undo log(回滚日志) 来保证的;
  • 隔离性是通过 MVCC(多版本并发控制) 或锁机制来保证的;
  • 一致性则是通过持久性+原子性+隔离性来保证;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值