MySQL是一種開源關系型數據庫管理系統,數據庫管理系統可以存儲、操作和管理數據庫中的數據。其中,MySQL數據頁數據結構是非常重要的數據結構之一,他是用來存儲和管理表中的數據的。
typedef struct st_page_header { LPCU_T_HDR phead; /* Page header end */ byte page_type; /* Type of page */ byte page_level; /* Level of page */ ushort n_recs; /* Number of records on page */ ushort free_ptr; /* Byte offset of free area pointer */ ushort garbage_ptr; /* Byte offset of garbage pointer */ ushort last_insert; /* Byte offset to last insert */ ulong copy_buf_size; /* Size of buffer for page rebuild */ /**< Compression header for compressed pages */ LZ4_COMPRESS compressed_page; /* Storage for compressed page */ } PAGE_HEADER;
MySQL數據頁數據結構是由由page_header和record數組構成的一個結構體。其中,page_header記錄了數據頁的基本信息,包括page_type(數據頁類型)、 page_level(數據頁級別)、 n_recs(數據頁中記錄的數量)、 free_ptr(數據頁自由空間指針)等。而record數組就是用來保存實際的數據。每個record就是一行數據,由多個字段組成。此處在record中的存儲順序與表的定義順序一致。
在數據頁中,數據以insert-order(插入順序)存儲,也就是說,每次插入一行數據,就會存儲在上一行數據之后,所以數據頁中的記錄不會按照主鍵或索引建立排序,但這并不妨礙MySQL在執行查詢時快速定位到對應的記錄。