B树是一种多路平衡查找树,它的每一个节点最多包含K个子节点,K成为树的阶,k的大小取决于磁盘页的大小。相对于二叉树查找树的优点,二叉树查找数据时候,最多要进行n(树的高度)次查找,最坏状况下磁盘IO树等于树的高度。IO次数少才能提升查找性能。性能
B-Tree是为磁盘等外存储设备设计的一种平衡查找树。设计
先了解磁盘的相关知识:指针
1.系统从磁盘读取数据到内存时是以磁盘块为基本单位的,位于同一磁盘块中的数据会被一次性的读取出来,而不是须要什么读取什么。索引
2.InnerDB存储引擎中是有页(Page)的概念,页是其管理的最小单位。默认每页的大小为16KB,能够设置。InnerDB在把磁盘数据读入内存的时候,会以页为基本单位。B-Tree的结构能够让系统高效的找到数据所在的磁盘块。内存
B+树是B-Tree的变种,有着比B-Tree更改的查询性能。二叉树
1个m阶的B+树具备以下特色:链表
1.有k个子树的中间节点包含k个元素,每一个元素不保存数据,只用来索引,全部数据保存在叶子节点上。数据
2.全部的叶子节点包含了所有元素的信息,及只想包含这些元素记录的指针,且叶子节点自己依关键字的大小自小而大顺序链接。查询
3.全部的中间节点元素都同时存在于子节点,在子元素节点中是最大(或最小)元素。磁盘
优点:
1.单一节点存储更多元素,是的查询的IO次数减小。
2.全部查询都要到叶子节点,查询性能稳定。
3.全部叶子节点都造成有序链表,便于范围查询。