Mysql四种事务隔离级别实现

原子性实现

事务是并发控制的最小单位,如果无法保证原子性,就无法保证一个事务的所有操作都被执行完成。原子性是通过事务回滚机制保证,undo log实现了事务回滚

在执行update/delete/insert跟更新操作时,会对应生成update/insert/delete相反的更新undo log日志,在部分事务执行失败的时候,使用undo log日志将已经执行的更新操作回滚,保证了事务的原子性。

Mysql四种事务隔离级别实现

持久性实现

持久性是指已经更新的操作会被记录在磁盘上,即使机器宕机,更新结果依然不会丢失

redo log主要用于机器宕机数据恢复,回复过程由mysql自动执行,bin log可以基于某个时间点对数据进行恢复,同时,bin log也用于主从复制。

隔离性

隔离性主要是指两个事务并行执行,彼此之间相互干扰。最高级别的隔离是串行化。锁+MVCC(读快照)是实现事务隔离级。

  • 脏读:读了别人没有提交的数据。
  • 不可重复读:指读取同一条数据,前后数据不一致,由update引起。
  • 幻读:读取一个范围内的数据,读取的数量不一致,由insert/update组成。

一致性

原子性、持久性和隔离性合起来共同保证了一致性,也是事务要达到的目标,修改之间满足各种约束的,修改之后也依然满足各种约束,业务上从一个A账户转账到B账户,最终应该保证A扣除金额和B增加金额相等。

参考:
Mysql四种事务隔离级别实现

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
Makia98

ACID和事务四个隔离级别是两个维度哦,OP需要再深入理解下呢?

2周前 评论
my38778570 (楼主) 2周前
Makia98 (作者) 1周前
my38778570 (楼主) 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!