聊聊MySQL中的事务,MVCC

文章详细阐述了数据库事务的四大特性——原子性、一致性、隔离性和持久性,并重点解析了redolog和undolog在确保事务特性中的作用。redolog保证了事务的持久性,而undolog则确保原子性。MVCC(多版本并发控制)机制在读写冲突中提供了解决方案,提高数据库并发性能。

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

事务


  • 我们知道,事务具有四大特性——ACID

  • A atomicity 指的是原子性

  • C consistency 指的是一致性

  • I isolation 指的是隔离性

  • D durability 指的是持久性

四大特性的实现原理


原子性

  • 原子性在这指的是整个事务操作,要么同时成功要么同时失败。让它变成一个整体。

  • 同时成功这好办,难办的是同时失败。

  • 想要实现同时失败,就需要恢复之前的数据,如何恢复旧版本数据呢? undolog回滚日志

  • undolog回滚日志是实现事务原子性的关键。它保存了数据修改之前的历史数据。当我们的事务中有insert操作时,他会反向的记录一个delete,反之亦然。

隔离性


  • 隔离性指的是当由多个活动事务的时候,每一个事务应该是相互独立的整体。也就是说它们互不干扰。

  • 隔离性实现是基于MVCC多版本数据并发控制实现的。

持久性


  • 持久性指的是,当我的事务提交,事务里面涉及修改的数据都会得到持久性。而不会因为某些特殊原因导致我的修改数据没有更新到磁盘里面去。

  • 持久性的实现是由redolog重做日志完成的。

  • 当我们对数据做增删改的时候,会经历这样的过程:

  • 修改缓冲池里面的数据

  • 写入缓冲池的redolog

  • 提交事务

  • 同步更新磁盘中的redolog

  • 等待后台线程刷新脏数据,完成持久化。

一致性


  • 一致性指的是发生增删改操作时,数据库从一个一致性的状态进入另一个一致性状态。

  • 其实上面三个特性就是为了实现一致性。

  • 举例说:

  • 我的钱包里有1000块钱,买了一包烟花掉100块钱。

  • 那么此时的一致性应该是这样:

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值