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大型互聯網技術的視頻免費分享給你們,歡迎進羣一塊兒深刻交流學習。