B+树索引:经过根节点到叶节点逐层寻找,一步一缩小寻找的范围对象,直至找到目标算法
Hash索引:采用必定的哈希算法,把键值更换成新的哈希值,检索时不须要像B+树那样依次从根节点到叶节点逐层寻找,一次性能够锁定相应的位置,找到目标值。数据库
B+树即Btree,它的树形结构如同一棵树木,可是倒立的树木。因此咱们称之为B+树索引。它的寻找目标值方式依次由根节点到叶节点。架构
即就是:B+树左右支点都是相同数目的,因此称之为平衡的多叉树,若是分为两个分叉则被称为平衡的二叉树,即如下边树木为例,以中间躯干为中点,左右对称。由根到支点高度为1,任何节点的两个子树的高度为1,即由根到叶节点须要一层指向一层。各个节点之间用指针进行链接。根与叶子之间相链接的躯干被称之为指针。并发
以上两幅对比能够看出,B+树索引就像一棵倒立的树木,树根咱们称之为根节点在上方,叶子咱们称之为叶节点在下方。根节点链接的左右叶节点是对称的,因此称之为平衡的多叉树。跟与叶子之间的箭头叫作指针,从左边节点分析,可在第一层寻找数值应该在[15,20]之间,在第二层又进行细分,数值在[15,18]之间,以此类推找到目标值。能够看出B+树索引是经过范围来寻找目标值的。分布式
B+树索引的应用场景和不适用场景:函数
哈希索引:哈希索引使用的是哈希算法,这里的算法指的是使用必定的函数,即经过寻找键值,来找到所寻找的对象。微服务
哈希算法即散列函数,它就是将明文翻译成一段固定长度的字符串密码,且是单向的。所以采用哈希算法不管你以前明文有多长,通过算法输出后都是固定长度的字符串密码。表明算法有MD5,MD4…..高并发
举个例子:好比说咱们在百度上想要搜 佩奇的图片,当没有任何外在的标识状况下,在巨量的图片库里你想要找到佩奇的图片,你以为是否是很困难。在这种状况下,咱们能够经过哈希索引,它会将图片库里的图片转化成一串0-1的编码。这样你就会发现,图片相近编码也会变得很相近。这样咱们在百度里一输入“佩奇”这样的编码,就会出来许多张佩奇的图片。这就是所谓的哈希索引。源码分析
优势:效率高,能够一次就直接找到目标性能
哈希索引示意图:
上图说明:当咱们在百度中输入“佩奇”做为键值,而后所谓的Hash索引就会在图片库中找到标识符也为“佩奇”的编码,而后就能够搜索出佩奇的图片了。因此它不属于范围搜索。
哈希索引的应用场景和不适合场景:
根据上面两种索引的示意图能够得出如下的不一样结论:
想免费学习Java工程化、分布式架构、高并发、高性能、深刻浅出、微服务架构、Spring,MyBatis,Netty源码分析等技术的朋友,能够加群:834962734,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给你们,欢迎进群一块儿深刻交流学习。