MySQL 是如何实现事务的?

Sherwin.Wei Lv7

MySQL 是如何实现事务的?

回答重点

MySQL 主要是通过:锁、Redo Log 、Undo Log、MVCC 来实现事务。

MySQL 利用锁(行锁、间隙锁等等)机制,使用数据并发修改的控制,满足事务的隔离性。

Redo Log(重做日志),它会记录事务对数据库的所有修改,当 MySQL 发生宕机或崩溃时,通过重放 redolog 就可以恢复数据,用来满足事务的持久性。

Undo Log(回滚日志),它会记录事务的反向操作,简单地说就是保存数据的历史版本,用于事务的回滚,使得事务执行失败之后可以恢复之前的样子。实现原子性和隔离性

MVCC(多版本并发控制),满足了非锁定读的需求,提高了并发度,实现了读已提交和可重复读两种隔离级别,实现了事务的隔离性。

看到这有小伙伴问一致性呢?

其实事务主要是为了实现一致性,具体是通过 AID,即原子性、隔离性和持久性来达到一致性的目的。

扩展知识

binlog、redo log 和 undo log

MySQL 锁

609.MySQL 中有哪些锁类型?

Log buffer

628. MySQL 中的 Log Buffer 是什么?它有什么作用?

Undo Log 和 MVCC

604.MySQL 中的 MVCC 是什么?

Comments