mysql缓存池的脏页,如果涉及到未提交的事务,会被后台线程持久化到硬盘吗?

最近了解到mysql会先对缓存池的脏页进行修改操作,后台线程会对脏页进行落盘。如果某个事务虽然修改了内存中的数据页,但是还没有提交,那这个脏页会被持久化到硬盘吗?

讨论数量: 2

我猜你说的是 redo log 已经过了 prepare 阶段,但没有到 commit 阶段。那么要看有没有写入 binlog ,分情况讨论:

  1. 已经 redo log,还没写入 binlog :说明 redolog 完成刷盘,但是 binlog 还没有刷盘,则回滚事务,脏页不会被持久化到硬盘
  2. 已经写入 redo log 和 binlog,还没写入 commit 标识:说明 redolog 和 binlog 都已经完成了刷盘,则提交事务,这个脏页会被持久化到硬盘。
1年前 评论
辣条拌鱼翅 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!