MySQL update + 两阶段提交的执行流程
2022-11-13 23:14:35 24 举报
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 条评论
回复 删除
下一页