美文网首页
3.MySQL中InnoDB引擎中页的概念

3.MySQL中InnoDB引擎中页的概念

作者: 未知的证明 | 来源:发表于2019-04-27 16:34 被阅读0次

https://segmentfault.com/a/1190000008545713

1.基础结构

Page是Innodb存储的最基本结构,也是Innodb磁盘管理的最小单位,与数据库相关的所有内容都存储在Page结构里。Page分为几种类型:数据页(B-Tree Node),Undo页(Undo Log Page),系统页(System Page),事务数据页(Transaction System Page)等;每个数据页的大小为16kb,每个Page使用一个32位(一位表示的就是0或1)的int值来表示,正好对应Innodb最大64TB的存储容量(16kb * 2^32=64tib)
一个Page的基本结构如下:


image.png

2.头部数据

每个page都有通用的头和尾,但是中部的内容根据page的类型不同而发生变化,头部的数据如下:

image.png
image.png

3.主体数据

在Page的主体部分,主要关注数据和索引的存储,他们都位于User Records部分,User Records占据Page的大部分空间,User Records由一条条的Record组成,每条记录代表索引树上的一个节点(非叶子节点和叶子节点);在一个单链表的内部,单链表的头尾由两条记录来表示,字符串形式的“ Infimum”代表开头,“Supremum”表示结尾;System Record 和 User Record是两个平行的段;
Innodb中存在四种不同的Record,分别是:

  1. 主键索引树非叶子节点
  2. 主键索引树叶子节点
  3. 辅助键索引树非叶子节点
  4. 辅助键索引树叶子节点

这四种节点Record格式上有差异,但是内部都存储着Next指针指向下一个Record


image.png

4.User Record

User Record在Page内以单链表的形式存在,最初数据是按照插入的先后顺序排列的,但是随着新数据的插入和旧数据的删除,数据物理顺序发生改变,但是他们依然保持着逻辑上的先后顺序


image.png

把User Record组织形式和若干Page组织起来,就得到了稍微完整的形式:


image.png

5.如何定位一个Record:

  1. 通过根节点开始遍历一个索引的B+树,通过各层非叶子节点达到底层的叶子节点的数据页(Page),这个Page内部存放的都是叶子节点

  2. 在Page内部从“Infimum”节点开始遍历单链表(遍历一般会被优化),如果找到键则返回。如果遍历到了“Supremum”,说明当前Page里没有合适的键,这时借助Page页内部的next page指针,跳转到下一个page继续从“Infmum”开始逐个查找


    image.png

6.整体的查找过程

image.png

相关文章

  • 3.MySQL中InnoDB引擎中页的概念

    https://segmentfault.com/a/1190000008545713 1.基础结构 Page是I...

  • Mysql之InnoDB存储结构

    InnoDB存储结构 Innodb逻辑存储单元为为表空间,段,区,页 InnoDB表空间 InnoDB存储引擎表中...

  • A.001.3.Mysql存储引擎

    1.存储引擎的基本概念 2.MySQL 5.7 支持的存储引擎 3.MySQL数据库中的存储引擎 4.MySQL ...

  • mysql中引擎区别

    MyISAM表中的锁 MyISAM引擎中的读锁和写锁都是表锁级别的。 innoDB引擎 innodb引擎中的表锁是...

  • mysql Innodb引擎中缓存池 Buffer Pool原理

    缓存 mysql Innodb引擎在处理客户端请求时,当访问某个页的数据的时候,即使我们请求的是某个页中的一条数据...

  • InnoDB引擎逻辑存储结构

    (本片博文是《MySQL技术内幕 InnoDB存储引擎第二版》的读书笔记) 索引组织表 InnoDB存储引擎中,表...

  • innodb status解读

    1. 序 innodb存储引擎在show engine innodb status输出中,显示除了大量的内部信息,...

  • MySQL InnoDB 存储引擎探秘

    在MySQL中InnoDB属于存储引擎层,并以插件的形式集成在数据库中。从MySQL5.5.8开始,InnoDB成...

  • Mysql缓存与redo log

    1,概念 1)InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理bp(buffer pool...

  • MySql数据库学习笔记

    MySql分层结构: 1.MySQL中InnoDB与MyISAM的区别: a.InnoDB引擎是MySql的默认引...

网友评论

      本文标题:3.MySQL中InnoDB引擎中页的概念

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