勵志

勵志人生知識庫

行格式

行格式是關係資料庫中存儲記錄的一種方式,它決定了每條記錄在資料庫中的存儲方式。行格式屬於存儲引擎的範疇,不同的存儲引擎可能會有不同的行格式實現。在MySQL中,行格式主要有以下幾種:

Dynamic (Version 5.7 默認):這是MySQL的默認行格式,它會在記錄的真實數據區記錄20位元組的溢出頁地址,不再記錄額外的數據。

Compressed:這種格式在Dynamic的基礎上進行壓縮處理,特別是對溢出頁的壓縮處理。對於blob、text這類大長度類型的數據,能夠進行非常有效的存儲。但是,這種格式是以時間換空間,性能並不友好,因此並不推薦在常見的業務中使用。

Compact:在Compact行格式中,對於占用存儲空間非常大的列,在記錄的真實數據處只會存儲該列的前768個位元組的數據,把剩餘的數據分散存儲在幾個其他的頁中,然後記錄的真實數據處用20個位元組存儲指向這些頁的地址,從而可以找到剩餘數據所在的頁。

存儲單元為頁(page),16KB(16384B)每條記錄都會有記錄頭,記錄幾乎都會有3個隱藏列(rowId, transactionId, rollPointer)。記錄的長度由變長欄位列表和NULL列表表示,如果沒有變長列或變長列都為null,則當前記錄沒有此部分。第一個位元組的第一位是標誌位,表示是否雙位元組表示。

行格式的設計體現了MySQL在存儲最佳化方面的智慧,它通過不同的方式處理不同類型的數據,以提高存儲效率和性能。