InnoDB存儲引擎的索引頁和槽

索引頁

  InnoDB存放數據記錄的頁叫索引頁,頁是InnoDB管理存儲空間的基本單位,大小一般是16KB。
  索引頁分爲7個部分:

File Header,表示頁的一些通用信息,如頁號、上一頁頁號、下一頁頁號,佔固定的38字節。
Page Header,表示索引頁專有的一些信息,如頁中的記錄的數量、槽數量,佔固定的56個字節。
Infimum + Supremum,兩個虛擬的行記錄,分別表示頁中的最小和最大記錄,佔固定的26個字節。
User Records:真實存儲我們插入的記錄的部分,大小不固定。
Free Space:頁中尚未使用的部分,大小不確定,插入數據時需要從這裏申請空間。
Page Directory:頁中的某些記錄相對位置,也就是各個槽在頁面中的地址偏移量,大小不固定,插入的記錄越多,這個部分佔用的空間越多。
File Trailer:用於檢驗頁是否完整的部分,佔用固定的8個字節,內存同步到磁盤時檢驗頁的完整性。

頁的槽(頁分組)

  InnoDB把頁中的記錄劃分爲若干個組,每個組的最後一個記錄的地址偏移量作爲一個槽,存放在Page Directory中,所以在一個頁中根據主鍵查找記錄是非常快的,分爲兩步:

通過二分法確定該記錄所在的槽,並找到該槽所在分組中主鍵值最小的那條記錄。
通過記錄的next_record屬性遍歷該槽所在的組中的各個記錄。

參考資料

  MySQL 是怎樣運行的:從根兒上理解 MySQL

發佈了33 篇原創文章 · 獲贊 1 · 訪問量 8743
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章