我们都知道InnoDB存储引擎的存储数据结构是B+树,那小伙伴们有没有想过,InnoDB存储引擎为什么要用B+树作为它的存储结构,而是用Hash,二叉树,AVL树,红黑树,B-树呢?
今天小编就来为大家梳理一下里面的逻辑。
Hash
Hash是什么?
Hash表又称散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。–《百度百科》
Hash特点是什么?
- 根据指定下标读取数据。
- 所有数据文件需要添加到内存,比较耗费内存空间。
- 精确查找速度快。
Hash存在什么问题?
如果所有的查询是等值查询,那么hash很快,如果是范围查询且较多的数据,hash不合适,因为hash要精确配置到每一个值,如果范围查询则需要逐个匹配。
思考:适合范围查询的数据结构有什么?
二叉树
二叉树是什么?
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得