天天看点

14.8.1 Overview of InnoDB Row Storage

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 功能的可用性。

继续阅读