MySQL--innodb存储引擎集大成
2021-05-15 16:57:39 2 举报
从执行器开始探索innodb存储引擎的原理(详细画出各组件之间的关联)
作者其他创作
大纲/内容
tail
redo log block多行redo log
row_id
redo log file
表空间+页号
主键
索引页面<索引页,页面最小主键值>
缓存页
InnoDB 存储引擎
head
roll_id
数据头
tx_id
页目录(二分)
执行器
OS Cache
数据行
null字段
。。。
chunk
槽
缓存页指针
后台IO线程
真实数据
描述数据
数据页
画图工具
数据区
可变字段
buffer pool
缓存页hash表
槽位
1. 结构描述:数据页之间是组成双向链表的,数据页内部的数据行是组成单 向链表的,每个数据页内根据主键做了一个页目录2. 没有索引时候的全表扫描:页目录可以使用二分查找,也就是使用主键查找的时候才可以使用,如果是没有索引的全表扫描,只能是从第一个数据页开始第一个数据行的链表开始依次遍历了,所以没有索引的全表扫描效率很低下
free 链表基础节点
undo log file
1. prepare阶段
lru 链表基础节点冷热数据
3. commit 阶段
read view1. 当前事务的ID2. 正在运行的事务ID组成的数组3. 上面数组的最小ID4. 所有事务ID的最大值+1落在34组成的左闭右开区间两种情况讨论
事务控制:默认使用MVCC多版本并发控制实现读一致使用独占锁实现写、更新时候的准确性
页目录
表空间ibd
redo log buffer
SQL语句
数据区(64个数据页)
SQL语句顺序追加
数据区组(256个数据区)
Buffer Pool:可以设置多个实现并发,执行SQL得到时候要上锁的,所以一个BufferPool只能处理一个SQL
flush 链表基础节点
binlog file
2. 写binlog日志
0 条评论
下一页