一条 UPDATE 语句执行时,三种日志是怎样写的?
先自己想一想,再看参考要点
参考要点
- 以 UPDATE orders SET status = 3 WHERE id = 1024 为例:按主键找到这一行,页不在缓冲池就先读入,并加 X 锁
- 旧值写入 undo log,修改缓冲池中的数据页并生成 redo log 放入 redo log buffer,执行器把修改写入 binlog cache
- 提交时按两阶段提交把 redo log 和 binlog 刷盘,释放锁并返回
- 脏页之后由后台线程写回磁盘