CS-Notes 学习笔记
Java 后端 · MySQL

一条 UPDATE 语句执行时,三种日志是怎样写的?

先自己想一想,再看参考要点

参考要点

  • 以 UPDATE orders SET status = 3 WHERE id = 1024 为例:按主键找到这一行,页不在缓冲池就先读入,并加 X 锁
  • 旧值写入 undo log,修改缓冲池中的数据页并生成 redo log 放入 redo log buffer,执行器把修改写入 binlog cache
  • 提交时按两阶段提交把 redo log 和 binlog 刷盘,释放锁并返回
  • 脏页之后由后台线程写回磁盘
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。