MySQL update + 两阶段提交的执行流程
2022-11-13 23:14:35   25  举报             
     
         
 update 执行流程
    作者其他创作
 大纲/内容
 更新完成
  prepare 阶段
  ③
  时刻 B
  数据页在内存中?
  两阶段提交
  返回行数据
  是
  存储引擎层
  时刻 A
  写入 redo log处于 prepare 阶段
  否
  redo log buffer
  commit 阶段
  commit 阶段(组提交)
  flush 阶段
  COMMIT QUEUE
  执行器想要取出需要修改的那一行
  binlog
  ①
  SYNC QUEUE
  prepare 阶段flush 阶段
  Server 层
  顺序将 binlog 从 cache 写入文件(不刷盘)
  组提交
  将新行更新到内存
  写入 binlog
  将字段进行修改,得到新行
  提交事务将 redo log 置于 commit 状态
  binlog 组提交redo log 组提交
  commit阶段
  磁盘中读入内存
  sync阶段
  ②
  FLUSH QUEUE
  各个事务按顺序做 commit 操作(将 redo log 状态设为 commit)
  binlog cache
  redo log
  不执行 redo log 的写入
  对 redo log 进行 write + fsync
  将 binlog 文件做 fsync多个事务的 binlog 合并一次刷盘
  普通 update 执行流程
  binlog 组提交
  binlog(leader)
   
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
 