美文网首页
2019-04-25数据页的结构

2019-04-25数据页的结构

作者: 括儿之家 | 来源:发表于2019-04-30 15:22 被阅读0次

数据页代表的这块16KB大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示:

记录的行格式示意图就是这样的: 从图中可以看到,我们特意把记录头信息的5个字节的数据给标出来了,说明它很重要,我们再次先把这些记录头信息中各个属性的大体意思浏览一下(我们目前使用Compact行格式进行演示):

delete_mask

这个属性标记着当前记录是否被删除,占用1个二进制位,值为0的时候代表记录并没有被删除,为1的时候代表记录被删除掉了。

啥?被删除的记录还在页中么?是的,摆在台面上的和背地里做的可能大相径庭,你以为它删除了,可它还在真实的磁盘上[摊手](忽然想起冠希~)。这些被删除的记录之所以不立即从磁盘上移除,是因为移除它们之后把其他的记录在磁盘上重新排列需要性能消耗,所以只是打一个删除标记而已,所有被删除掉的记录都会组成一个所谓的垃圾链表,在这个链表中的记录占用的空间称之为所谓的可重用空间,之后如果有新记录插入到表中的话,可能把这些被删除的记录占用的存储空间覆盖掉。

min_rec_mask

B+树的每层非叶子节点中的最小记录都会添加该标记,什么是个B+树?什么是个非叶子节点?好吧,等会再聊这个问题。反正我们自己插入的四条记录的min_rec_mask值都是0,意味着它们都不是B+树的非叶子节点中的最小记录。

n_owned

这个暂时保密,稍后它是主角~

heap_no

这个属性表示当前记录在本页中的位置,从图中可以看出来,我们插入的4条记录在本页中的位置分别是:2、3、4、5。是不是少了点啥?是的,怎么不见heap_no值为0和1的记录呢?

这其实是设计InnoDB的大叔们玩的一个小把戏,他们自动给每个页里边儿加了两个记录,由于这两个记录并不是我们自己插入的,所以有时候也称为伪记录或者虚拟记录。这两个伪记录一个代表最小记录,一个代表最大记录,

相关文章

  • 2019-04-25数据页的结构

    数据页代表的这块16KB大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示: delete...

  • 数据页的结构

    注意:InnoDB引擎,这里说的是数据页,不是其他类型的页。 组成 File Header(文件头) Page H...

  • MYSQL实战优化——数据页、表空间

    数据页结构 经过前面的介绍现在我们都知道,一行一行的数据是存放在数据页里的,所以接下来我们该分析一下数据页的结构了...

  • InnoDB 数据页结构

    原文链接 - InnoDB数据页结构 页是MySQL管理存储空间的基本单位,一个页的大小一般是16KB,并且记录其...

  • InnoDB 数据页结构

    页是 InnoDB 管理存储空间的基本单位,InnoDB 为了不同的目的设计了不同类型的页,比如,这里我们讨论的是...

  • 第 13 课 PostgreSQL 存储之Page(页面)源码分

    在文章:PostgreSQL 数据存储结构 中我们介绍了控制页和数据页的基本存储结构,那是从物理上进行说明各种页面...

  • MYSQL实战优化——索引介绍

    初步了解索引 之前我们介绍过,数据页在磁盘文件中的物理存储结构,数据页之间是组成双向链表的,然后数据页内部的数据行...

  • 为什么索引能提高查询速度

    MySQL 的基本存储结构 MySQL的基本存储结构是页(记录都存在页里边): 各个数据页可以组成一个双向链表 每...

  • 48-MySQL-InnoDB数据库存储结构

    一、页 1、数据库的存储结构——页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的...

  • Mysql 存储-学习记录

    1,基础的数据结构-B+tree2,Innodb的页---逻辑3,Innodb的索引---数据结构 主键索引(按...

网友评论

      本文标题:2019-04-25数据页的结构

      本文链接:https://www.haomeiwen.com/subject/szxzgqtx.html