MYSQL 事务的底层原理

💡 原文中文,约15100字,阅读约需36分钟。
📝

内容提要

MySQL使用WAL机制实现事务,包括redo和undo日志。事务id分为只读和读写事务,MVCC用于提高数据库并发性能。InnoDB使用Buffer Pool缓存页,将脏页刷新到磁盘。

🎯

关键要点

  • MySQL使用WAL机制实现事务,包括redo和undo日志。

  • WAL机制确保在系统崩溃后可以通过日志恢复数据。

  • 事务id分为只读和读写事务,分别通过特定语句开启。

  • InnoDB为每个事务分配唯一的事务id,确保事务的顺序性。

  • MVCC用于提高数据库并发性能,避免读写冲突时加锁。

  • MVCC通过版本链和ReadView管理事务的可见性。

  • InnoDB的Buffer Pool用于缓存页,减少磁盘IO开销。

  • Buffer Pool中的脏页通过flush链表管理,定期刷新到磁盘。

  • Redo日志记录事务修改,确保持久性,即使系统崩溃也能恢复。

  • Undo日志用于实现事务的原子性,记录回滚所需的信息。

➡️

继续阅读