数据结构---B+Tree

B+Tree

在我没了解B+Tree之前,听别人提到这个词时,脑子一片空白,懵懵的,今天利用空闲时间,简单了解了一下B+Tree,下面来简单认识一下B+Tree吧!

简单了解一下B+Tree

B+Tree:是为磁盘等外存储设备设计的一种平衡查找树。
他的存储特点有哪些呢?

存储特点
子叶节点存储Data(data元素地址指针位置等),非叶子节点存储索引
叶子节点用指针连接,提高区间访问性能

根据下面这幅图我简单介绍一下
Mysql给每个叶子节点设置大小为16K;
以数值15为例,一般ID都会使用bigint类型,大概会分配8Bigint字节,(数值15旁边的空格为)磁盘地址指针大概会分配6Bitint字节;
以两千万数据为例,高度为3的B+tree数据结构;
叶子节点大概可以存放1170个元素;
非叶子节点可以存放16个元素;
IO读写操作只需要2-3次,即可查询到要查询的数据。

折半查找
看下图:
非叶子结点会提前直接加载到内存中,例如要查找20的索引,前面定位两次非叶子节点都是在内存中查找,不需要和磁盘进行IO操作,进行折半查找,只需要叶子节点进行一次的IO操作,把磁盘数据加载到内存。
在这里插入图片描述

MySQL表数据文件

test_myisam.frm FRM文件 存储的表结构文件
test_myisam.MYD MYD文件 存储引擎
test_myisam.NYI NYI文件 数据文件索引文件

在这里插入图片描述

MyISAM存储引擎和InnoDB存储引擎的区别?

主要是在叶子节点。
MyISAM存储引擎
叶子节点存储的是地址指针的位置
非聚集索引(索引和数据没有放在一个文件里,索引和数据没有聚集在一个文件)
InnoDB存储引擎
叶子节点存储的是地址指针位置对应的节点值
聚集索引(索引和数据放在一个文件里,索引和数据聚集放在一个文件)

猜你喜欢

转载自blog.csdn.net/xiaohua616/article/details/131755494