索引與算法

InnoDB存儲引擎索引概述

InnoDB存儲引擎支持以下幾種常見的索引:
?B+樹索引
?全文索引
?哈希索引

B+樹索引并不能找到一個給定鍵值的具體行栏豺。B+樹索引能找到的只是被查找數據行所在的頁吓揪。然后數據庫通過把頁讀入到內存介陶,再在內存中進行查找,最后得到要查找的數據蔓纠。

B+樹是通過二叉查找樹榛斯,再由平衡二叉樹绊汹,B樹演化而來。

平衡二叉樹的定義如下:首先符合二叉查找樹的定義奖慌,其次必須滿足任何節(jié)點的兩個子樹的高度最大差為1抛虫。

平衡二叉樹的查詢速度的確很快,但是維護一棵平衡二叉樹的代價是非常大的简僧。通常來說建椰,需要1次或多次左旋和右旋來得到插入或更新后樹的平衡性。

對一棵平衡樹的維護是有一定開銷的岛马,不過平衡二叉樹多用于內存結構對象中广凸,因此維護的開銷相對較小。

B+樹

B+樹由B樹和索引順序訪問方法(ISAM)演化而來蛛枚,但是在現實使用過程中幾乎已經沒有使用B樹的情況了谅海。

B+樹是為磁盤或其他直接存取輔助設備設計的一種平衡查找樹。在B+樹中蹦浦,所有記錄節(jié)點都是按鍵值的大小順序存放在同一層的葉子節(jié)點上扭吁,由各葉子節(jié)點指針進行連接。其高度為2盲镶,每頁可存放4條記錄侥袜,扇出(fan out)為5。

B+索引在數據庫中有一個特點是高扇出性溉贿,因此在數據庫中枫吧,B+樹的高度一般都在2~4層,這也就是說查找某一鍵值的行記錄時最多只需要2到4次IO宇色,這倒不錯九杂。因為當前一般的機械磁盤每秒至少可以做100次IO,2~4次的IO意味著查詢時間只需0.02~0.04秒宣蠕。

聚集索引(clustered index)

聚集索引(clustered index)就是按照每張表的主鍵構造一棵B+樹例隆,同時葉子節(jié)點中存放的即為整張表的行記錄數據,也將聚集索引的葉子節(jié)點稱為數據頁抢蚀。聚集索引的這個特性決定了索引組織表中數據也是索引的一部分镀层。同B+樹數據結構一樣,每個數據頁都通過一個雙向鏈表來進行鏈接皿曲。

聚集索引的存儲并不是物理上連續(xù)的唱逢,而是邏輯上連續(xù)的吴侦。這其中有兩點:一是前面說過的頁通過雙向鏈表鏈接,頁按照主鍵的順序排序坞古;另一點是每個頁中的記錄也是通過雙向鏈表進行維護的备韧,物理存儲上可以同樣不按照主鍵存儲。

聚集索引的另一個好處是绸贡,它對于主鍵的排序查找和范圍查找速度非扯⒑快毅哗。葉子節(jié)點的數據就是用戶所要查詢的數據听怕。如用戶需要查詢一張注冊用戶的表,查詢最后注冊的10位用戶虑绵,由于B+樹索引是雙向鏈表的尿瞭,用戶可以快速找到最后一個數據頁,并取出10條記錄翅睛。

輔助索引(Secondary Index)

葉子節(jié)點并不包含行記錄的全部數據声搁。葉子節(jié)點除了包含鍵值以外,每個葉子節(jié)點中的索引行中還包含了一個書簽(bookmark)捕发。該書簽用來告訴InnoDB存儲引擎哪里可以找到與索引相對應的行數據疏旨。由于InnoDB存儲引擎表是索引組織表,因此InnoDB存儲引擎的輔助索引的書簽就是相應行數據的聚集索引鍵扎酷。

輔助索引與聚簇索引的關系

B+樹索引的使用

聯合索引
覆蓋索引

哈希索引

哈希索引只能用來搜索等值的查詢

全文檢索

將存儲于數據庫中的整本書或整篇文章中的任意內容信息查找出來的技術檐涝。它可以根據需要獲得全文中有關章、節(jié)法挨、段谁榜、句、詞等信息凡纳,也可以進行各種統計和分析窃植。

倒排索引(inverted index)

?inverted file index,其表現形式為 {單詞荐糜,單詞所在文檔的ID}
?full inverted index巷怜,其表現形式為 {單詞,(單詞所在文檔的ID暴氏,在具體文檔中的位置)}


B+樹索引 和 哈希索引還比較好理解
光全文索引就可以出一本書咯丛版,目前看概念沒法子理解%>_<%

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市偏序,隨后出現的幾起案子页畦,更是在濱河造成了極大的恐慌,老刑警劉巖研儒,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豫缨,死亡現場離奇詭異独令,居然都是意外死亡,警方通過查閱死者的電腦和手機好芭,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門燃箭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舍败,你說我怎么就攤上這事招狸。” “怎么了邻薯?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵裙戏,是天一觀的道長。 經常有香客問我厕诡,道長累榜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任灵嫌,我火速辦了婚禮壹罚,結果婚禮上,老公的妹妹穿的比我還像新娘寿羞。我一直安慰自己猖凛,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布绪穆。 她就那樣靜靜地躺著辨泳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霞幅。 梳的紋絲不亂的頭發(fā)上漠吻,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音司恳,去河邊找鬼途乃。 笑死,一個胖子當著我的面吹牛扔傅,可吹牛的內容都是我干的耍共。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼猎塞,長吁一口氣:“原來是場噩夢啊……” “哼试读!你這毒婦竟也來了?” 一聲冷哼從身側響起荠耽,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钩骇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體倘屹,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡银亲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了纽匙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片务蝠。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烛缔,靈堂內的尸體忽然破棺而出馏段,到底是詐尸還是另有隱情,我是刑警寧澤践瓷,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布院喜,位于F島的核電站,受9級特大地震影響当窗,放射性物質發(fā)生泄漏够坐。R本人自食惡果不足惜寸宵,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一崖面、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梯影,春花似錦巫员、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至感猛,卻和暖如春七扰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陪白。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工颈走, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咱士。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓立由,卻偏偏與公主長得像,于是被迫代替她去往敵國和親序厉。 傳聞我的和親對象是個殘疾皇子锐膜,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容