B-Tree 和 B+Tree 结构及应用,InnoDB 引擎, MyISAM 引擎
1.什么是B-Tree 和 B+Tree,他们是做什么用的? B-Tree是为了磁盘或其它存储设备而设计的一种 多叉平衡查找树 ,B-Tree 和 B+Tree 广泛应用于文件存储系统以及数据库系统中。 在大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,树的高度就会增大,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于 树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下 (为什么会出现这种情况?这跟外部存储器-磁盘的存储方式有关)。那么该如何减少树的高度呢?一个基本的想法就是:采用 多叉树 结构(每个节点存放多个元素,每个节点有多个子节点,这样树的高度就降低了)。根据平衡二叉树的启发,自然就想到平衡多路查找树结构。B-Tree的各种操作能使B-Tree保持较低的高度,从而达到有效避免磁盘过于频繁的查找存取操作,从而有效提高查找效率。 2.B-Tree 2.1定义 m阶B-Tree满足以下条件: 1、每个节点最多拥有m个子树 2、根节点至少有2个子树 3、分支节点至少拥有m/2颗子树(除根节点和叶子节点外都是分支节点) 4、所有叶子节点都在同一层 5、每个节点最多可以有m-1个key 6、每个节点中的key以升序排列 7、节点中key元素左节点的所有值都小于或等于该元素