文章目录
- B+Tree
- 简单了解一下B+Tree
- MySQL表数据文件
- MyISAM存储引擎和InnoDB存储引擎的区别?
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存储引擎
:
叶子节点存储的是地址指针位置对应的节点值
聚集索引(索引和数据放在一个文件里,索引和数据聚集放在一个文件)