ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL数据页的社会关系

MySQL数据页的社会关系

原创 数据库开发技术 作者:DBA修行之路 时间:2021-05-30 11:09:06 0 删除 编辑

    最近被问到InnoDB引擎的数据页知识点,自己对这方面不是很了解,便想着学习一下相关的知识点,给自己充充电,以下是自己的一些学习总结,记录下来以备后时之需。

    我们都知道在InnoDB存储引擎中,所有数据都被逻辑地存放在表空间中,即tablespace,表空间是InnoDB存储引擎中最高的存储逻辑单位,在表空间中包含多个段(Segment),一个段中又包含多个区(extent),一个区中又包含多个页(page),页是mysql中磁盘和内存交换的基本单位,默认为16KB,而一个页中有可以细分,每个页中有多个数据组,每个数据组中包含多条行记录。就类型下面这样子,可以这样类比,现在世界上最高的独立单位是国家,而国家下面有省,省下面有市,市下面有县等等。

    上图中,数据区组对于段(Segment),数据区即对应于区(Extent),数据页对应于页(Page),数据组对应数据页中的槽(slot)。

    好了,这就是InnoDB存储引擎的数据存储的整个大框架了,如果把表空间类比于国家,数据页可能只能算的上是个小村子,就从小村子说起吧,平时村与村之间需要沟通交流吧,数据页之间也是如此。那么数据页之间怎么沟通交流呢,答案就是双向链表。

    通过双向链表,MySQL可以很方便且高效地进行范围查询。

    接下来再说一下村子内部的事情吧,即数据页内部的结构,现在,先简单了解下吧,关于每个部分的内容和字段,后续再学习,哈哈。

其中,行记录中,多个行记录构成一个组,相邻的行通过指针关联,是下面这样的。

MySQL数据页的Page Directory部分会存放着一个个槽,每个槽指向当前组内最大记录的地址偏移量,通过这种方式,可以实现二分法快速查找,是不是又提高性能了呢。

    好了,今天先学习到这,下次再继续了解更加细节的内容。

原文作者:DBA修行之路;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-05-25

  • 博文量
    64
  • 访问量
    23946