14.9 InnoDB Row Storage and Row Formats InnoDB 行存储和行格式:
14.9.1 Overview of InnoDB Row Storage
14.9.2 Specifying the Row Format for a Table
14.9.3 DYNAMIC and COMPRESSED Row Formats
14.9.4 COMPACT and REDUNDANT Row Formats
这个章节讨论 InnoDB 功能比如表压缩,长类型的列值的 off-page storage ,
大的index key 前缀(innodb_large_prefix) 是通过ROW_FORMAT ,CREATE TABLE statement.子句控制的
14.9.1 Overview of InnoDB Row Storage InnoDB 行存储概述:
存储用于行和相关的列影响查询和DML的性能,
因为更多的行被塞入到一个单独的磁盘page,查询和index 查找可以变的更快,
更少的cache memory 是需要的在InnoDB buffer pool,
更少的I/O 是被写出更新的数据
数据在每个InnoDB 表是被分成pages,组成每个表的页是被安排到一个tree data 被称为 B-tree index.
表数据和secondary indexes 都使用这种类型的结构。
B-tree index 代表整个表被称为 clustered index,
它是根据主键列组织。
索引的数据结果节点包含所有列的值(对于clustered index)
或者index列和主键列(对于secondary indexes).
可变长度列是一个例外对于这个规则。
列比如BLOB和VARCHAR 是太长了放到 B-tree page是存储在单独的分配的dick pages 称为overflow pages.
我们称这些列为 overflow页,
那些列的值是存储在 overflow pages的单链表里,
每个这样的列有它自己的一个或者多个 overflow pages的列表。
在有些情况下,所有或者一个long列的前缀是存储在 B-tree,
为了避免浪费空间和消除读取单独页的需要。
下面的章节描述 如何配置InnoDB 表的row format来控制可变长度列值的存储。
Row format 配置也决定表compression feature 的可用性和 large index key prefix feature (innodb_large_prefix).