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日志用于实现事务的原子性,记录回滚所需的信息。
➡️