MySQLB树和B+树的区别
B树是⼀种多路平衡的查树,它的每个节点最多包含k个孩⼦,k被称为B树的阶,k的⼤⼩取决于磁盘页的⼤⼩。
B树具有以下的特征:
[if !supportLists]1.[endif]根结点⾄少有2个⼦⼥;
[if !supportLists]2.[endif]每个中间节点都包含k-1个元素和孩⼦,其中m/2<= k <=m;
[if !supportLists]3.[endif]每个叶⼦节点都包含k-1个元素,其中m/2<= k <=m;
[if !supportLists]4.[endif]所有叶⼦节点都位于同⼀层;
mongodb和mysql结合
[if !supportLists]5.[endif]每个节点中的元素从⼩到⼤排列,节点当中k-1个元素正好是k个孩⼦所包含元素的值域划分。
B树的查⽐较快速,但是插⼊和删除就⽐较复杂了,所以B树主要⽤于⽂件系统以及部分数据库索引,⽐如MongoDB,MySQL中使⽤的是
B+树索引。
B+树是B树的⼀种变种,有这⽐B树更加优秀的查询性能。
B+树具有以下特征:
[if !supportLists]1.[endif]有k个⼦树的中间节点包含k个元素(B树中是k-1个元素),每个元素不保存数据,只⽤来索引,所有数据保存在叶⼦节点。
[if !supportLists]2.[endif]所有叶⼦节点包含了全部的元素信息,以及指向这些元素记录的指针,且叶⼦节点按照关键字的⼤⼩从⼩到⼤的顺序排列;
[if !supportLists]3.[endif]所有中间节点元素都同时存在于⼦节点,⼦节点是最⼤(或最⼩)元素。
MySQL是基于磁盘的数据库,索引是以索引⽂件的形式存在于磁盘中的,索引的查过程就会涉及到磁盘IO消耗,磁盘IO的消耗相⽐较于内存IO 的消耗要⾼好⼏个数量级,所以索引的组织结构要设计得在查关键字时要尽量减少磁盘IO的次数。
B+树更适合外部存储(⼀般指磁盘存储),由于内节点(⾮叶⼦节点)不存储data,所以⼀个节点可以存储更多的内节点,每个节点能索引的范围更⼤更精确。也就是说使⽤B+树单次磁盘IO的信息量相⽐较B树更⼤,IO效率更⾼。
MySQL是关系型数据库,经常会按照区间来访问某个索引列,B+树的叶⼦节点间按顺序建⽴了链指针,加强了区间访问性,所以B+树对索引列上的区间范围查询很友好。⽽B树每个节点的key和data在⼀起,⽆法进⾏区间查。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。