5-07 深入理解MVCC与BufferPool缓存机制【undo日志版本链&BufferPool缓存机制】
2022-12-27 14:08:51 0 举报
07 深入理解MVCC与BufferPool缓存机制【undo日志版本链&BufferPool缓存机制】
作者其他创作
大纲/内容
执行计划生成索引选择
InnoDB存储引擎
数据库的增删改查,都是直接操作buffer pool,buffer pool一般设置,为机器内存的60%左右
3. 更新内存数据
80
100
1
name=test111
undo日志版本链
LiLei100
Server层
name=test
记录版本链
Innodb引擎SQL执行的BufferPool缓存机制
分析器
300
调用引擎接口
Redo LogBuffer
如果事务提交成功,此时系统宕机buffer pool里的数据还没来得及写入磁盘,可以用redo日志里的数据恢复buffer pool里的缓存数据
表字段一id
连接器
redo日志文件(Innodb引擎特有)
LiLei
1. 加载缓存数据加载id为1的记录所在的整页数据
隐藏字段roll_pointer
语法词法分析
binlog文件(属于Server层)
pagename=test111......
管理连接与权限校验
200
Buffer Pool缓存池
binlog主要用来恢复数据库磁盘里的数据
6. 准备提交事务binlog日志写入磁盘
LiLei300
优化器
修改的数据
LiLei500
4.写redo日志
查询缓存
隐藏字段trx_id
undo日志文件(Innodb引擎特有)
LiLei400
Client执行SQLudpate t set name='test111' where id=1;id为1的数据name的原值为test
如果事务提交失败要回滚数据,可以用undo日志里的数据,恢复buffer pool里的缓存数据
undo回滚日志
page......
8. 随机写入磁盘,以page为单位写入,这步做完磁盘里的name=test111
磁盘文件(idb)
2. 写入更新数据的旧值便于回滚
表字段二name
LiLei200
5. 准备提交事务redo日志写入磁盘
pagename=test......
执行器
7. 写入commit标记到redo日志文件里,提交事务完成,该标记为了保证事务提交后redo与binlog数据一致
IO线程
0 条评论
下一页