這篇文章給大家介紹MySQL數(shù)據(jù)庫中索引的原理是什么,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司專注于安康企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都做商城網(wǎng)站。安康網(wǎng)站建設(shè)公司,為安康等地區(qū)提供建站服務(wù)。全流程按需求定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
Innodb存儲引擎實現(xiàn)索引數(shù)據(jù)結(jié)構(gòu)的是B+樹,下面介紹幾個數(shù)據(jù)結(jié)構(gòu)。一步一步地說明為什么應(yīng)該使用B+樹。
1.1 B+樹索引
B+樹索引的結(jié)構(gòu)與二叉樹很類似。鍵值快速找到數(shù)據(jù)。但是,B+樹種的B不是二叉,它表示平衡。注意:只有索引行。數(shù)據(jù)庫通過將頁面加載到存儲器中來檢索存儲器中的數(shù)據(jù),最后檢索數(shù)據(jù)。
介紹二分搜索法。按排序(遞增或減少)的順序記錄,在搜索過程中通過跳轉(zhuǎn)查找。例如,示出了5、10、19、21、31、37、42、48、50、52的10個數(shù)量。
可以以三次搜索速度找到48。逐次搜索需要8次。對于上述10個數(shù),依次檢索的平均檢索次數(shù)是5.5次,二分檢索法是2.9次,最壞的情況是按順序檢索的次數(shù)是10次,二分檢索的次數(shù)是4次。兩點搜索將innodb頁面Directory的插槽按主關(guān)鍵字的順序保存,對于每個具體記錄的查詢將頁面Directory分成兩部分進行檢索。
1.2 二叉查找樹
數(shù)字表示各節(jié)點的鍵的值。在樹里找。左子樹的鍵值總是小于跟的鍵值,右子樹的鍵值總是大于跟的鍵值。通過中序遍歷得到鍵值:2、3、5、6、7、8。
查找樹的平均查找次數(shù)為2.3次,但是查找樹是可以任意構(gòu)建。和這樣調(diào)查順序是一樣的。因此,引用了取得二叉樹平衡的想法,AVL樹。
1.3 定義
符合查找樹的定義,其次必須滿足任何節(jié)點的左右兩個子樹的高度最大差為1。
二叉樹的平衡非??欤菫榱司S持二叉樹的平衡,通常需要一次以上的左轉(zhuǎn)和右轉(zhuǎn)插入或更新后樹木的平衡。
1.4 B+樹特性
全部記錄在葉節(jié)點中,按順序保存,各葉節(jié)點(以頁為單位)在邏輯上連續(xù)保存,是雙向循環(huán)鏈表。
B+樹插入必須確認(rèn)插入后的葉節(jié)點中的記錄還被排序,因此在插入時必須考慮以下三種情況。
數(shù)據(jù)庫中的一個特征是B。因此,在數(shù)據(jù)庫中,B+樹的高度通常在2~3層,也就是說,正在尋找某個鍵行的記錄。最多可以進行2~3次IO。普通盤每秒至少可以進行100次IO。
集合索引和非集合索引的區(qū)別在于頁節(jié)點是否保存整個行的記錄。
2.1 聚集索引
InnoDB存儲引擎表是索引組織表,表格數(shù)據(jù)按主關(guān)鍵字順序保存。集合索引是從各表的主鍵制作B+樹,在葉節(jié)點中存儲有表整體的行記錄數(shù)據(jù),因此索引聚集的葉節(jié)點也成為數(shù)據(jù)頁。此特性用于收集索引,索引表中的數(shù)據(jù)也被確定為索引的一部分。同時B+樹的數(shù)據(jù)結(jié)構(gòu)相同。每個數(shù)據(jù)頁面通過雙向鏈接鏈接鏈接。
實際數(shù)據(jù)只由一個B+樹排列。因此,每個表格只有一個鏈接索引。在許多情況下,查詢優(yōu)化器傾向于采用集中索引,因為它可以在索引的葉節(jié)點處直接找到數(shù)據(jù)。此外,由于定義了數(shù)據(jù)的邏輯順序,所以可以快速訪問對象范圍的查詢。查詢優(yōu)化器可以很快地發(fā)現(xiàn)需要掃描某范圍的數(shù)據(jù)。注意各頁的記錄也用雙向鏈保持。
2.2 非聚集索引
也叫輔助索引。數(shù)據(jù)行中沒有全部數(shù)據(jù)。頁面節(jié)點除了關(guān)鍵字之外,每個頁面級別的索引都包含書簽。InnoDB記憶引擎告訴我們索引對應(yīng)的行數(shù)據(jù)在哪里。因為InnoDB存儲引擎表是索引組織表,因此InnoDB存儲引擎的輔助索引書簽是該行的數(shù)據(jù)的集合索引鍵。圖是索引和輔助索引的關(guān)系。
用輔助索引檢索數(shù)據(jù)時,InnoDB存儲引擎創(chuàng)建循環(huán)輔助索引,用葉電平指針取得箭頭鍵索引的鍵,用主鍵索引找到完整的行記錄。例如,要在三個高度的輔助索引樹中查找數(shù)據(jù),必須找到輔助索引的主關(guān)鍵字。期間是3次。如果索引樹的高度為3,則會檢索3次組合索引。要搜索有完整行數(shù)據(jù)的頁面,6次邏輯Io必須訪問最終數(shù)據(jù)頁面。
關(guān)于MySql數(shù)據(jù)庫中索引的原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。