MySQL 事务、锁和MVCC

本文介绍了MySQL事务的ACID特性,包括原子性、隔离性、持久性和一致性,并详细阐述了四种隔离级别:读未提交、读已提交、可重复读和串行化。重点讨论了可重复读级别下InnoDB的MVCC机制,以及如何通过undo log和read view实现并发读写。此外,还对比了红黑树、B树和B+树的区别,特别是B+树在MySQL索引中的应用。
摘要由CSDN通过智能技术生成

一、事务四大特性(ACID):

原子性(Atomicity):当前事务的操作要么同时成功,要么同时失败。原子性由undo log日志来保证,undo log记载着数据修改前的信息,undo log可用于对事务进行回滚

隔离性(Isolation):在事务「并发」执行时,他们内部的操作不能互相干扰。如果多个事务可以同时操作一个数据,那么就会产生脏读、重复读、幻读的问题。事务与事务之间需要存在「一定」的隔离。在InnoDB引擎中,定义了四种隔离级别供我们使用。

持久性(Durability):一旦提交了事务,它对数据库的改变就应该是永久性的。持久性由redo log 日志来保证,当我们要修改数据时,MySQL是先把这条记录加载到内存中,将对应记录进行修改,内存写完了,会写一份到redo log,即便内存修改完了就挂了,我们还可以根据redo log来对数据进行恢复。

一致性(Consistency):「一致性」可以理解为我们使用事务的「目的」,而「隔离性」「原子性」「持久性」均是为了保障「一致性」的手段

二、四种隔离级别

读未提交(read uncommit):事务B读取到了事务A还没提交的数据,如果事务A回滚了,就会读到不正确的数据,产生脏读

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值