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 的兼容。

14.8.1 Overview of InnoDB Row Storage

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

原文地址:https://www.cnblogs.com/hzcya1995/p/13351163.html