【二】B+树

2019-10-10  本文已影响0人  Michael_abc

前言

B+树挺重要的,数据库索引就是用的B+树。

思考

为什么数据库索引不使用hash表或者其他数据结构。

定义

B+树,之前我们学习的搜索二叉树,和B+树类似,但是是多叉,且非叶节点不保存数据,只保存索引值,既然和搜索二叉树类似,就意味着B+树是有顺序的,这个特性很重要,顺序就意味能二分查找,形象的解释B+树就是多叉搜索树但非叶子没有值。

特性

例图

M=3

image.png

每一层都是从小到大的,树的查找则是从顶层查找到叶子节点,查找的节点树就是树的高度,因为是多路,所以意味着树的高随着M的变大而变小。

Select/Insert/Delete

个人总结

索引数据

数据库,意味着数据量会很大表的数据十几G上百G不稀奇,就MySQL来说InnoDB来说表的数据存储就是一个巨大的B+树,意味着一个B+树就是特别大,无法加载的内存中的,所以是存在磁盘中的。

来分析一下,要快速查找数据,数据在磁盘中,磁盘读取的效率比内存读取差几百倍,那优先问题,如何减少磁盘读取。

下面是几种数据结构的使用分析:

InnoDB

InnoDB的表数据结构就是一个以主键为权值的B+树 存储在磁盘中。

优化建议:

上一篇下一篇

猜你喜欢

热点阅读