Innodb通过
Buffer Pool
,
LogBuffer
,
Redo Log
,
Undo Log
来实现事务
以⼀个update语句为例:
-
Innodb在收到⼀个update语句后,会先根据条件找到数据所在的⻚,并将该⻚ 缓存在Buffer Pool 中
-
执⾏update语句,修改Buffer Pool中的数据,也就是 内存中的数据
-
针对update语句⽣成⼀个RedoLog对象,并 存⼊LogBuffe r中
-
针对update语句⽣成 undolog⽇志 ,⽤于 事务回滚
-
如果事务提交,那么则把 RedoLog对象进⾏持久化 ,后续还有其他机制将Buffer Pool中所修改的数据⻚持久化到磁盘中
-
如果事务回滚,则利⽤ undolog⽇志进⾏回滚
![](https://img-blog.csdnimg.cn/e1285871d10a473ca892cc0eff29dfc3.png)