一、mysql innodb資料頁的組成,單頁資料頁的大小為16kb,由以下七部分組成:
2.資料頁頭:記錄頁面的控制資訊。大小是56個位元組,包括頁的左右兄弟頁面指標(雙向鍊錶),頁面的空間使用情況。
3.虛記錄:最大虛記錄和最小虛記錄。
4.記錄堆:行記錄儲存區,分為有效記錄和已刪除記錄、自由空間鍊錶(已刪除記錄組成的鍊錶)。
5.未分配空間:頁面未使用的儲存空間。
6.頁目錄: slot資訊。頁目錄裡維護多個 slot ,乙個 slot 包含多個行記錄。每個 slot 佔 2 個位元組,記錄這個 slot 裡的行記錄相對頁初始位置的偏移量。由於索引只能定位到資料頁,而定位到資料頁內的行記錄還需要在記憶體中進行二分查詢,而這個二分查詢就需要借助 slot 資訊,先找到對應的 slot ,然後在 slot 內部通過資料行中記錄頭里的下乙個記錄位址進行遍歷。每乙個 slot 可以包含 4 到 8 個資料行。如果沒有 slot 輔助,鍊錶本身是無法進行二分查詢的。見下圖:
7.頁尾:頁面最後部分,佔8個位元組,主要儲存頁面的效驗資訊。
二、資料頁內記錄維護:
順序保證:用邏輯有序(單向鍊錶)。
插入策略:先自由空間鍊錶,後未分配空間。刪除操作頻繁的話會產生磁碟碎片。
頁內查詢:選用二分查詢。
Mysql InnoDB資料頁結構
官方名字 索引頁 所以你知道了,user records 和 free space 之間是此消彼長的關係 簡化下,因為變長字段長度列表,null值列表都沒什麼用 所以儲存記錄為 delete mask 標記是否刪除了 heap no 記錄的序號,序號為0的記錄是infimum,序號1為spuermu...
MySQL innodb 資料頁結構分析
頁 page 是 innodb 儲存引擎用於管理資料的最小磁碟單位。常見的頁型別有資料頁 undo 頁 系統頁 事務資料頁等,本文主要分析的是資料頁。預設的頁大小為 16kb,每個頁中至少儲存有 2 條或以上的行記錄,本文主要分析的是頁與行記錄的資料結構,有關索引和 b tree 的部分在後續文章中...
mysql InnoDB關鍵特性 重新整理鄰接頁
innodb儲存引擎還提供了flush neighbor page 重新整理鄰接頁 的特性。其工作原理為 當重新整理乙個髒頁時,innodb儲存引擎會檢測該頁所在區 extent 的所有頁,如果是髒頁,那麼一起進行重新整理。通過aio可以將多個io寫入操作合併為乙個io操作,故該工作機制在傳統機械磁...