美文网首页程序员
InnoDB-B+树索引[一]

InnoDB-B+树索引[一]

作者: 辛未_杨 | 来源:发表于2018-07-16 14:37 被阅读0次

InnoDB知识点梳理

InnoDB逻辑存储结构

表空间:数据都存放在表空间之下

段:数据段,索引段,回滚段

区:由64个页组成

页:InnoDB磁盘管理的最小单位[数据页/Undo页等8种常见类型的页]

行:对应数据库中的一行记录

InnoDB的物理存储结构

InnoDB表由共享表空间[.ibd],日志文件组,表结构定义文件[.frm]组成

InnoDB的行记录格式

Compact行记录格式

Redundant行记录格式

至此,我们大概的了解到数据是如何存储在Innodb中的。


InnoDB数据页结构

File Header

重要属性:

FIL_PAGE_OFFSET 

FIL_PAGE_PREV

FIL_PAGE_NEXT

FIL_PAGE_TYPE[0X45BF/0X0003]

Page Header

重要属性:

PAGE_N_DIR_SLOTS[槽数]

Infimun + Supremum Records[虚拟行]

User Records[实际行]

Free Space 

Page Directory[页目录]用于定位页内的具体一条记录

File Trailer

页目录的逻辑图

在页内,通过Page_Directory二分查找得到一个槽位,如果该槽位的值不是要找的值的话,读取该槽位的记录中的下一个记录。

至此我们可以得到一个页中的一条记录。

PS:Innodb按照索引找到的是记录所在的页,而不是一条具体记录!!!


B+树介绍

B+树 [对于B+树的定义,目前存在一些异议,本文参考维基百科以及<<Mysql技术内幕Innodb存储引擎>>中的定义]是一种数据结构,InnoDB中的索引就是基于B+树实现的。

B+插入/删除节点

案例:https://www.cnblogs.com/nullzx/p/8729425.html

关联关系

InnoDB的页即为B+树中的叶节点,索引即为非叶节点,叶节点中包含了众多的记录。

以聚集索引为例,非叶节点中保存了子节点中主键最小记录及其对应的page地址。所有的非叶节点都相当于构成一层索引,从一个粗略的根页往下层查,逐步细化到某一个页。然后从一个页中尝试去获取一条对应的记录,查找过程类似下图:

相关文章

  • InnoDB-B+树索引[一]

    InnoDB知识点梳理 InnoDB逻辑存储结构 表空间:数据都存放在表空间之下 段:数据段,索引段,回滚段 区:...

  • Innodb-B+树-MTR

    InnoDB的Mini-transaction(简称mtr)是保证若干个page原子性变更的单位。一个mtr中包含...

  • Innodb-B+树-并发控制

    内存并发控制 为了维护内存结构的一致性,比如Dictionary cache、sync array、trx sys...

  • B树与索引

    目录 一, 索引与B树介绍 1. B树 ,B+树 ,B*树 2. 聚集索引 3. 辅助索引 3.1 普通辅助索引3...

  • B树与索引

    目录 一, 索引与B树介绍 1. B树 ,B+树 ,B*树 2. 聚集索引 3. 辅助索引 3.1 普通辅助索引3...

  • Innodb-B+树-页内查找

    页内查找 页内记录组织形式 页内Record以升序的顺序连接成 单向链表,数据页内的Record 逻辑上相邻,物理...

  • Innodb-B+树-页间查找

    B树 物理组织 表空间下一级称为Segment。Segment与数据库中的索引相映射。Innodb引擎内,每个索引...

  • day08-存储引擎

    一、回顾 1.1 索引 (1) 聚集索引构建B树的过程 (2) 辅助索引构建B树的过程 (3) 辅助索引细分 单列...

  • 索引(五)索引数据结构

    数据库索引,是数据库管理系统中一个排序的数据结构,主要有B树索引、Hash索引两种 一:B树索引 先来看下B树索引...

  • MySQL索引原理及实现

    MySQL数据库支持多种索引,例如B树索引、哈希索引、全文索引等,本文着重讲解下B树索引。 主要内容: 索引本质 ...

网友评论

    本文标题:InnoDB-B+树索引[一]

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