91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是MySQL索引原理

發布時間:2020-06-04 16:13:35 來源:PHP中文網 閱讀:459 作者:三月 欄目:MySQL數據庫

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

索引原理&本質

MySQL官方解釋:索引是為MySQL提高獲取數據效率的數據結構,為了快速查詢數據。索引是滿足某種特定查找算法的數據結構,而這些數據結構會以某種方式指向數據,從而實現高效查找數據。

B+樹

MySQL一般以B+樹作為其索引結構,那么B+樹有什么特點呢?

樹度為n的話,每個節點指針上限為2n+1

非葉子節點不存儲數據,只存儲指針索引;葉子節點存儲所有數據,不存儲指針

在經典B+樹基礎上增加了順序訪問指針,每個葉子節點都有指向相鄰下一個葉子節點的指針,如圖所示。主要為了提高區間訪問的性能,例如要找key為20到50的所有數據,只要按著順序訪問路線一次性訪問所有數據節點。

什么是MySQL索引原理

帶順序訪問的B+樹簡圖

局部性原理和磁盤預讀

那么為什么數據庫系統普遍使用B+樹作為索引結構,而不選例如紅黑樹其他結構呢?

首先要先來介紹下局部性原理和磁盤預讀的概念。

一般來說,索引本身較大,不會全部存儲在內存中,會以索引文件的形式存儲在磁盤上。所以索引查找數據過程中就會產生磁盤IO操作,而磁盤IO相對于內存存取非常緩慢,因此索引結構要盡量減少磁盤IO的存取次數。

為了減少磁盤IO,磁盤往往會進行數據預讀,會從某位置開始,預先向后讀取一定長度的數據放入內存,即局部性原理。因為磁盤順序讀取的效率較高,不需要尋道時間,因此可以提高IO效率。

預讀長度一般為頁的整數倍,主存和磁盤以頁作為單位交換數據。當需要讀取的數據不在內存時,觸發缺頁中斷,系統會向磁盤發出讀取磁盤數據的請求,磁盤找到數據的起始位置并向后連續讀取一頁或幾頁數據載入內存,然后中斷返回,系統繼續運行。而一般數據庫系統設計時會將B+樹節點的大小設置為一頁,這樣每個節點的載入只需要一次IO。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奎屯市| 新河县| 望谟县| 隆尧县| 太原市| 台江县| 垦利县| 柯坪县| 平远县| 嘉义市| 芦溪县| 天柱县| 深水埗区| 托克托县| 海口市| 平安县| 磐石市| 黄冈市| 麻江县| 丹棱县| 金平| 拉孜县| 清原| 裕民县| 北川| 四川省| 通城县| 龙泉市| 常熟市| 沧州市| 定边县| 东乡县| 乌鲁木齐县| 和政县| 都昌县| 称多县| 二连浩特市| 北票市| 甘孜县| 公主岭市| 武隆县|