勵志

勵志人生知識庫

mysql行格式

MySQL支持四種行格式,分別是:

Redundant:這是較老的數據格式,使用欄位長度偏移列表來記錄每列的結束位置。如果整條記錄的數據大小小於或等於127位元組,則使用1個位元組來記錄長度,否則使用2個位元組。每個列記錄的第一個bit用來表示該列是否為NULL。

Compact:這種格式包括變長欄位長度列表、NULL值列表、記錄頭信息和列值。變長欄位長度列表使用1-2個位元組來表示一個欄位的長度,逆序存儲。NULL值列表存儲每條記錄中允許為NULL的欄位,使用1表示實際為NULL的欄位,0表示實際不為NULL的欄位。記錄頭信息使用5個位元組來表示,包含該記錄是否被刪除、記錄類型、下一條記錄的相對偏移量等信息。

Dynamic:與Compact格式很像,差異在於頁面溢出的處理上。如果頁溢出,Dynamic格式會使用20B存儲整個列信息(列數據都存儲在溢出頁上),而Compact格式會將溢出的數據單獨放入一個頁,並加上20B的額外頁信息。

Compressed:這種格式在Dynamic的基礎上使用了壓縮算法,可以減少存儲空間的占用。

在InnoDB存儲引擎中,MySQL 5.6版本默認使用Compact格式,而從5.7版本開始,默認使用Dynamic格式。Compressed格式不能套用於系統數據,因此Compact和Dynamic格式套用較廣泛。