美文网首页DBmysql数据结构
Mysql InnoDB b+树的高度

Mysql InnoDB b+树的高度

作者: 久伴我还是酒伴我 | 来源:发表于2022-04-22 16:46 被阅读0次

简介

为什么Mysql考虑使用B+树,而不是B树,其实我们可以先了解下B树和B+树的特点来看下。

B树特点

※ 树的每个结点都会存储数据
※ 单次查询不一定要遍历到树的根部,平均查询时间会比较快

image.png

B+树特点

※ 非叶子节点不存储数据,只存储(冗余)索引,索引包含主键和指针
※ 叶子节点才真正存储数据
※ 每个叶子节点互相链表相连,保证了范围查询的时效性(页之间用双向链表连接,数据间用单项链表链接)

image.png

※ B+树只有叶子节点才存储数据,叶子节点包含双向指针指向,所以对于范围查询B+树明显优于B树。
※ IO对性能的影响,B树的每个节点都存储数据,而B+树只有叶子节点才存储数据,每个叶子所以查找相同数据量的情况下,B树的高度更高,IO更频繁,效率自然就降低了。

InnoDB存储单位

InnoDB最小存储单位是页,叶子节点和非叶子节点最小单位都是页,页大小Mysql 默认设定16384字节,约为16KB。

// 可查看innodb_page_size 大小
show GLOBAL VARIABLES like "innodb_page_size";

InnoDB引擎-文件系统-磁盘扇区关系

image.png image.png image.png

1)磁盘扇区:磁盘的最小存储单元,默认512字节。
2)文件系统最小单位块(机械硬盘一个扇区512字节,SSD固态硬盘使用4K对齐按照4K扇区规则写入数据)。4k = 8个扇区。尽管一个文件只有1个字节,仍然占用4k空间
3)innodb的所有数据文件(后缀为ibd的文件),他的大小始终都是16384(16k)的整数倍.

InnoDB高度计算

我们假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节
我们一个页中能存放多少这样的索引元素,其实就代表有多少指针,即16384/14=1170;

假设一行记录的数据大小为1k,实际上现在很多互联网业务数据记录大小通常就是1K左右

高度为2的B+树能存放1170×16=18720
高度为3的B+树能存放1170×1170×16 = 21902400

InnoDB中B+树高度一般为1-3层,它就能满足千万级的数据存储。

在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次IO操作即可查找到数据。

一般根节点是常驻内存的,所以一般我们查找千万级别的数据,只需要 2 次磁盘 IO。

相关文章

  • MYSQL的索引与B+Tree

    MySQL 索引与 B+ 树 B+ 树 MySQL Innodb 存储引擎是使用 B+ 树来组织索引的。在介绍 B...

  • mysql innodb B+树高度

    1,最小存储单元 1)磁盘扇区:磁盘的最小存储单元,默认512字节。2)文件系统最小单位块。4k = 8个扇区。尽...

  • MySQL

    索引 InnoDB MySQL5.6版本之后默认引擎是innoDB,以B+树作为索引的数据存储结构。B+数是以B树...

  • Mysql InnoDB b+树的高度

    简介 为什么Mysql考虑使用B+树,而不是B树,其实我们可以先了解下B树和B+树的特点来看下。 B树特点 ※ 树...

  • Mysql InnoDB B+树索引和哈希索引的区别?Mongo

    Mysql InnoDB B+树索引和哈希索引的区别?MongoDB 为什么使用B-树?

  • MySQL中的InnoDB索引

    为什么是B+树? 在MySQL的InnoDB存储引擎中,索引的数据结构是B+树。B+树是一棵N叉树,在总结点数不变...

  • B+树

    B+树概况 InnoDB使用了B+树索引模型 每个索引在InnoDB里面对应一棵B+树 B+树特点 m阶B+树每个...

  • 为什么MySQL InnoDB 存储引擎要用B+树做索引,而不用

    为什么MySQL InnoDB 存储引擎 要用B+树做索引,而不用B树? (1)B+树空间利用率更高,可减少I/O...

  • 2019-04-30 树索引的使用规则

    B+树索引的使用 标签: MySQL是怎样运行的 我们前边详细、详细又详细的唠叨了InnoDB存储引擎的B+树索引...

  • 索引相关

    1.MySQL中使用较多的索引有Hash索引,B+树索引2.InnoDB默认索引实现为:B+树 hash索引 1....

网友评论

    本文标题:Mysql InnoDB b+树的高度

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