MySQl存储引擎原理拆解

一、mySql记录存储

我们都知道mysql 是以页的存储形式去存储的,每页占据16kb,具体页的结构可以看下面

页头:记录页面的控制信息,共占56字节,包括页的左右兄弟页面指针,页面空间使用情况等

虚记录:最大虚记录--比页内最大主键还大;最小虚记录:比页内最小主键还小

记录堆:行记录存储区,分为有效记录和已删除记录两种

自由空间链表:已删除记录组成的链表

未分配空间:页面未使用的存储空间

Slot区:槽位,连续的内存空间

页尾:页面最后部分,占8个字节,主要存储页面的校验信息;

 

二、页内记录维护

1.顺序保证:InnoDB逻辑有序,链表结构,数据通过单向链表,页与页之间是双向链表,插入快,查询只能遍历整个链表,所以查询慢

2.插入策略:用自由链表空间+未分配空间

3.页内查询:二分查找+遍历,类似于跳跃表,slot区, S1-Sn 分成n个槽位,之后用二分查找找到每个槽位对应的链表,链表之后遍历查找。如下图

下面是跳表的知识可以自行查看:https://zhuanlan.zhihu.com/p/68516038 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值