问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
事务是如何通过日志来实现的?
在 Innodb 存储引擎中,事务日志是通过 redo 和 innodb 的存储引擎日志缓冲(Innodb log buffer)来实现的。
当开始一个事务的时候,会记录该事务的 lsn(log sequence number)号;
当事务执行时,会往 InnoDB 存储引擎的日志缓存里面插入事务日志;
当 事 务 提 交 时 , 必 须 将 存 储 引 擎 的 日 志 缓 冲 写 入 磁 盘 ( 通 过innodb_flush_log_at_trx_commit 来控制),也就是写数据前,需要先写日志。这种方式称为“预写日志方式”,innodb 通过此方式来保证事务的完整性。
也就意味着磁盘上存储的数据页和内存缓冲池上面的页是不同步的,是先写入 redo log,然后写入 data file,因此是一种异步的方式。
评论
有用 5
墨值悬赏