B树和B+树的区别

B树的特点:
(1)节点排序
(2)一个节点可以存放多个元素,并且这多个元素也是排序好的

B+树的特点
(1)拥有B树的特点
(2)叶子节点之间有指针
(3)非叶子节点上的元素在叶子节点上都冗余了,也就是叶子节点中存储了所有的元素,并且排好顺序。

为什么MySQL使用B+树

Mysql索引使用的是B+树,因为索引是用来加快查询速度的,而B+树通过对数据进行排序所示是可以提高查询速度的,然后B+树的一个节点可以存放多个元素,从而可以使得B+树的高度不会太高。

磁盘跟内存进行交互的时候,是以页为单位的,在进行数据读取的时候,一般都是读取的页的整数倍,innodb存储引擎默认读取的都是16kb的数据。而B树有这样的特点,在进行数据的检索时,数据和key是放在一起的,意味着在每一次读取数据时,每一个块,也就是每一个16kb的数据中,会存存着索引数据+实际数据,而实际数据多了只会占用大量的内存空间,造成树的分支范围变小,导致想要插入更多的数据时,深度又会增加。基于此考虑,将B树中的非叶子结点的数据放到叶子节点中,也就是非叶子节点只保存key的值,叶子节点中存储实际的数据。

你可能感兴趣的:(b树,数据结构)