一条更新sql的执行流程(简化)

现有一个更新的sql语句为:

update T set A=1 where ID=1;

假设Mysql开启了binlog日志,并且使用的InnoDB引擎,那么更新操作的执行流程如下:

  1. 连接,缓存,词法,优化器,走索引
  2. 执行器: 查找满足ID=1的数据
  3. 执行器:将数据的 A字段 设置为 1
  4. 更新 buffer pool 数据页,记录redo log 处于 prepare 状态(undo log日志写入)
  5. 记录到 binlog ,记录 redo log 处于 commit 状态
  6. purge 自主选择时间删除 `undo log