1. 程式人生 > 資料庫 >Mysql InnoDb資料頁的組成及記錄維護

Mysql InnoDb資料頁的組成及記錄維護

一、Mysql Innodb資料頁的組成,單頁資料頁的大小為16KB,由以下七部分組成:

1.檔案頭:大小為38個位元組。(頁的位置,上一頁下一頁位置,checksum , LSN)

2.資料頁頭:記錄頁面的控制資訊。大小是56個位元組,包括頁的左右兄弟頁面指標(雙向連結串列),頁面的空間使用情況。

3.虛記錄:最大虛記錄和最小虛記錄。

4.記錄堆:行記錄儲存區,分為有效記錄和已刪除記錄、自由空間連結串列(已刪除記錄組成的連結串列)。

5.未分配空間:頁面未使用的儲存空間。

6.頁目錄: slot資訊。頁目錄裡維護多個 slot ,一個 slot 包含多個行記錄。每個 slot 佔 2 個位元組,記錄這個 slot 裡的行記錄相對頁初始位置的偏移量。由於索引只能定位到資料頁,而定位到資料頁內的行記錄還需要在記憶體中進行二分查詢,而這個二分查詢就需要藉助 slot 資訊,先找到對應的 slot ,然後在 slot 內部通過資料行中記錄頭裡的下一個記錄地址進行遍歷。每一個 slot 可以包含 4 到 8 個數據行。如果沒有 slot 輔助,連結串列本身是無法進行二分查詢的。見下圖:

7.頁尾:頁面最後部分,佔8個位元組,主要儲存頁面的效驗資訊。

二、資料頁內記錄維護:

    順序保證:用邏輯有序(單向連結串列)。

    插入策略:先自由空間連結串列,後未分配空間。刪除操作頻繁的話會產生磁碟碎片。

    頁內查詢:選用二分查詢。