mysql之mvcc与BufferPool缓存机制
2024-04-10 18:51:00 0 举报
mysql之mvcc与BufferPool缓存机制 以一个sql的执行来讲bufferpool
作者其他创作
大纲/内容
如果事务提交成功后,bufferPool的数据没来得及写入磁盘中,此时宕机了,可以使用redo日志文件恢复bufferPool的缓存数据
8.随机将bufferPool池数据以page为单位写入到磁盘中,这步完成后磁盘数据才为libo666
调用引擎接口
name=libo666.....
7.写入commit标记到redo文件中,事务提交完成,该标记用来保证redo日志跟binlog日志数据一致
binlog日志文件主要用来恢复数据
数据库的增删改查都是操作bufferPool中的数据,内存大小一般设置为机器内存的60%
执行器
page页
InnoDb引擎
客户端执行update account set name = 'libo666' where id = 1; id=1的name原始值为libo
bufferPool缓存池
name=libo.....
管理连接与权限校验
6.准备提交事务,写入binlog日志文件
.....
4.写redo日志
分析器
redo日志文件(InnoDb特有)
5.准备提交事务redo日志写入磁盘
优化器
如果事务提交失败,可以使用undo日志恢复bufferPool池中的数据
语法与词法分析
undo日志文件(InnoDb特有)
redo日志都是顺序写入(速度非常快),而且是特定的大小的文件,写满了就再创建一个文件
name=libo
磁盘文件idb
IO线程
执行计划生成、索引选择
name=libo666
修改的数据
1.加载缓存数据加载id=1数据所在的page页至bufferPool缓存
server层
2.写入更新数据的旧值,便于回滚
redo log buffer pool
查询缓存
恢复
3.更改缓存池中数据
连接器
idb文件是随机读写的,因为可能会删除,为了不浪费空间会自动整理
binlog日志文件(属于server层)
0 条评论
下一页