mysql undo日志链
2022-08-10 20:23:14 0 举报
过程图
作者其他创作
大纲/内容
1
innodb存储引擎
版本链,所有事务针对这条记录的修改都会加进来
6.准备提交事务,binlog日志写入磁盘。
[数组]里面装的是左右未提交事务
pagename=zgf
已提交
优化器
如果事务提交失败,可以用undo恢复缓存里面的数据
redo log buffer
80
未开始
300
zgf5
zgf3
外面那个最大的,例子中为300
查询缓存
binlog文件(属于server层)name=zgf
roll_point
page页(16k)name=zgf
200
3.更新内存数据name=zgf
8.随机写入磁盘,以page为单位,这步结束,磁盘里面name=zgf
管理连接与权限校验
磁盘文件idb
外面这个是所有事务中ID最大的
100
zgf1
min[数组]
修改的数据
4.写redo日志
redo 日志文件(innodb特有)name=zgf
name
语法词法分析
zgf4
5.准备提交事务,commit开始,将redo日志写入磁盘
执行器
undo日志文件(innodb特有)name=xbj
undo回滚日志
调用引擎接口
trx_id
连接器
binlog主要用来恢复数据库磁盘里面的数据
2.将更新数据的旧值写入回滚日志
zgf2
page。。。。
zgf
server层,每种存储引擎都一样的
事务提交成功,内存数据还没同步到磁盘,就用redo恢复bufferpool缓存数据
IO线程
未提交和已提交
id
buffer pool缓存池
1.将id为1的记录所在整页加载到内存
crud都是操作的bufferpool,一般为机器的60%
7.写入conmmit标记到redo日志,保证redo和binlog一样。commit完成。
分析器
执行计划生成索引选择
sql:update t set name=zgf where id =1
收藏
0 条评论
下一页