溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是MySQL索引原理

發(fā)布時(shí)間:2020-06-04 16:13:35 來(lái)源:PHP中文網(wǎng) 閱讀:402 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

下面一起來(lái)了解下什么是MySQL索引原理,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望什么是MySQL索引原理這篇短內(nèi)容是你想要的。 

索引原理&本質(zhì)

MySQL官方解釋:索引是為MySQL提高獲取數(shù)據(jù)效率的數(shù)據(jù)結(jié)構(gòu),為了快速查詢數(shù)據(jù)。索引是滿足某種特定查找算法的數(shù)據(jù)結(jié)構(gòu),而這些數(shù)據(jù)結(jié)構(gòu)會(huì)以某種方式指向數(shù)據(jù),從而實(shí)現(xiàn)高效查找數(shù)據(jù)。

B+樹

MySQL一般以B+樹作為其索引結(jié)構(gòu),那么B+樹有什么特點(diǎn)呢?

樹度為n的話,每個(gè)節(jié)點(diǎn)指針上限為2n+1

非葉子節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),只存儲(chǔ)指針?biāo)饕?;葉子節(jié)點(diǎn)存儲(chǔ)所有數(shù)據(jù),不存儲(chǔ)指針

在經(jīng)典B+樹基礎(chǔ)上增加了順序訪問(wèn)指針,每個(gè)葉子節(jié)點(diǎn)都有指向相鄰下一個(gè)葉子節(jié)點(diǎn)的指針,如圖所示。主要為了提高區(qū)間訪問(wèn)的性能,例如要找key為20到50的所有數(shù)據(jù),只要按著順序訪問(wèn)路線一次性訪問(wèn)所有數(shù)據(jù)節(jié)點(diǎn)。

什么是MySQL索引原理

帶順序訪問(wèn)的B+樹簡(jiǎn)圖

局部性原理和磁盤預(yù)讀

那么為什么數(shù)據(jù)庫(kù)系統(tǒng)普遍使用B+樹作為索引結(jié)構(gòu),而不選例如紅黑樹其他結(jié)構(gòu)呢?

首先要先來(lái)介紹下局部性原理和磁盤預(yù)讀的概念。

一般來(lái)說(shuō),索引本身較大,不會(huì)全部存儲(chǔ)在內(nèi)存中,會(huì)以索引文件的形式存儲(chǔ)在磁盤上。所以索引查找數(shù)據(jù)過(guò)程中就會(huì)產(chǎn)生磁盤IO操作,而磁盤IO相對(duì)于內(nèi)存存取非常緩慢,因此索引結(jié)構(gòu)要盡量減少磁盤IO的存取次數(shù)。

為了減少磁盤IO,磁盤往往會(huì)進(jìn)行數(shù)據(jù)預(yù)讀,會(huì)從某位置開始,預(yù)先向后讀取一定長(zhǎng)度的數(shù)據(jù)放入內(nèi)存,即局部性原理。因?yàn)榇疟P順序讀取的效率較高,不需要尋道時(shí)間,因此可以提高IO效率。

預(yù)讀長(zhǎng)度一般為頁(yè)的整數(shù)倍,主存和磁盤以頁(yè)作為單位交換數(shù)據(jù)。當(dāng)需要讀取的數(shù)據(jù)不在內(nèi)存時(shí),觸發(fā)缺頁(yè)中斷,系統(tǒng)會(huì)向磁盤發(fā)出讀取磁盤數(shù)據(jù)的請(qǐng)求,磁盤找到數(shù)據(jù)的起始位置并向后連續(xù)讀取一頁(yè)或幾頁(yè)數(shù)據(jù)載入內(nèi)存,然后中斷返回,系統(tǒng)繼續(xù)運(yùn)行。而一般數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)時(shí)會(huì)將B+樹節(jié)點(diǎn)的大小設(shè)置為一頁(yè),這樣每個(gè)節(jié)點(diǎn)的載入只需要一次IO。

看完什么是MySQL索引原理這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI