14.8 innodb row storage and row formats innodb 行存儲和行格式
14.8.1 overview of innodb row storage
14.8.2 specifying the row format for a table
14.8.3 dynamic and compressed row formats
14.8.4 compact and redundant row formats
本章節讨論 innodb 特性 比如表壓縮, 長的可變長度列的值的頁面,
大的index key 字首(innodb_large_prefix) 是有create table 語句的row_format 控制。
它也讨論考慮選擇正确的格式,在mysql 釋出版本之間row formats 的相容。
rows行的存儲相關的列影響了查詢和dml操作的性能。随着越來越多的行放進一個單獨的磁盤頁面,
查詢和index 查找會變的更快,更少的cache memory 被需要在innodb buffer pool,
更少的i/o是需要寫出更新的值
資料在每個innodb 表被分成pages,pages 組成 每個表是被安排在一個tree data 結構叫做 一個b-tree index.
表資料和secondary indexes 都使用這種類型的結構。
b-tree index 代表整個表稱為 clustered index, 它是被組織根據primary key 列。
index 資料結構的節點包含所有列的值 (對于clustered index) 或者 index columes和主鍵列(對于secondary indexes).
可變長度列是這個規則的例外, 比如blob 和varchar 是太長了來填滿一個b-tree頁 是存儲在單獨的配置設定的磁盤頁
被稱為溢出列。 這些列的值是存儲在溢出頁的單連結清單中,
并且每個列有它自己的一個或多個溢出頁的清單。在某些情況下,所有或長列值的字首是存儲在b-tree裡,
為了避免浪費存儲空間和消除需要讀取一個單獨的頁。
下面的章節描述如何配置innodb 表的row format 來控制可變長度列值是如何存儲的。
row format 配置也決定了表壓縮特性和大index key 功能的可用性。