sql查询执行过程
2023-02-19 18:34:15 0 举报
sql查询执行过程
作者其他创作
大纲/内容
描述数据
头部节点
7.写入binlog日志文件与位置写入commit标记
开始节点
基础节点count=n
缓存页
执行器
一行数据
文件头
数据页默认16KB
包含很多数据页
数据加载到缓存页1S后,访问这个缓存页
磁盘文件
注意: 描述数据大约相当于缓存页的5%大小,因为真正的Buffer Pool大小会超出一些,大概130MB
Buffer Pool缓冲池默认128MB
Buffer Pool缓冲池 和磁盘文件存的均是数据页
undo日志文件
free双向链表节点存空闲缓存页的描述数据块的地址
2.写入数据的旧值便于回滚
结束节点
缓存页(冷数据区域)
redo日志文件
脏数据
6.准备提交事务binlog日志写入磁盘
后台线程
多个数据行
Buffer Pool缓冲池
LRU链表尾指针
注意:如果最终的事务commit标记不在redolog里,则此次事务提交不成功
缓存页(热数据区域)
数据页
尾部节点
(key)表空间号+数据页号=(value)缓存页地址
4.写redo日志
binlog日志文件
IO线程
5.redo日志刷入磁盘
加载数据页
冷数据区域的缓存页移动到热数据区域的链表头部
定时刷新
预读机制和全表扫描加载进来的缓存页,都在冷数据区域
flush链表,刷新脏页,记录被修改过的缓存页的描述数据块
LRU淘汰机制先挑选冷数据区域的尾部缓存页刷入磁盘
最大(小)记录
Redo logBuffer
数据页头
刷入磁盘
1.加载缓存数据
数据页缓存哈希表
LRU链表冷热数据分离
InnoDB存储引擎
一直频繁访问的缓存页都在热数据区域里
8.刷磁盘
3.更新内存数据
LRU链表头指针
0 条评论
下一页