REDUNDANT 冗余 |
COMPACT 紧凑 |
DYNAMIC 动态 |
COMPRESSED 压缩 |
|
---|---|---|---|---|
Overview 概述 |
兼容旧版本MySQL | 与COMPACT格式相比空间增加了20%,但是会增加部分操作的CPU | 与紧凑行格式一致,区别在于变长类型字段完全存储与页外 | 与动态行格式一致,区别在于支持表和索引数据压缩。控制列的数量 |
Compact Storage Characteristics 紧凑存储特性 |
No | Yes | Yes | Yes |
Enhanced Variable-Length Column Storage 增强的变长列存储 |
No | No | Yes | Yes |
Large Index Key Prefix Support 支持大索引键前缀 |
No | No | Yes | Yes |
Compression Support 支持压缩 |
No | No | No | Yes |
Supported Tablespace Types 表空间类型 |
system, file-per-table, general | system, file-per-table, general | system, file-per-table, general | file-per-table, general |
Index Key Length Field 索引长度 |
768字节 | 768字节 | 3072字节 | 3072字节 |
non-NULL Variable-Length Field 非Null可变长度头 |
前面可能有可变长度的头,每个长度占用1—2个字节,取决于列最大长度。只有该列存储在页外等情况才需要2字节。外部存储的列,2字节表示内部数据长度加上指向外部存储部分20字节指针的总长度 | 与COMPACT一致 | 与COMPACT一致 | |
Null column vector Field NULL列标识 |
包含1Bit用于标识NULL列,占用CELLING(N/8)字节,N=可为NULL的列数 | 与COMPACT一致 | 与COMPACT一致 | |
Link and row-level locking Field 链接记录和行锁 |
6字节头,用于链接连续记录和行级锁定 | 5字节头,用于链接连续记录和行级锁定 | 与COMPACT一致 | 与COMPACT一致 |
Field Pointer 字段记录指针 |
包含指向记录的每个字段的指针。如果字段总长度小于128字节,则指针为1个字节,否则为2个字节。指针指向了数据部分 | |||
User-defined Columns Data 用户列数据 |
聚集索引记录包含所有用户列数据 | 记录头后边是非NULL的数据 | 与COMPACT一致 | 与COMPACT一致 |
NULL Store | NULL值在记录目录中保留1—2个字节。如果存储在变长列中,NULL值在记录的数据部分保留0字节。固定长度的列,固定长度保留在数据部分,为NULL值保留固定空间允许将NULL值直接更新为非NULL值而不会引起索引碎片 | |||
Transaction ID and Roll pointer Field 事务和回滚指针 |
6字节事务ID,7字节回滚指针 | 6字节事务ID,7字节回滚指针 | 与COMPACT一致 | 与COMPACT一致 |
Row ID Field 默认主键 |
如果没有主键,则定义6字节的ID列 | 如果没有主键,则定义6字节的ID列 | 与COMPACT一致 | 与COMPACT一致 |
Secondary Index 二级索引 |
每个二级索引都包含所有主键 | 每个二级索引都包含所有主键。如果存在可变长度的主键列,那么每个二级索引的记录头都有一个可变长度部分来记录长度,即使该索引定义在了固定长度列。 | 与COMPACT一致 | 与COMPACT一致 |
Variable-Length Field Store Location 变长字段存储位置 |
页内与页外 | 页内与页外 | 变长字段完全存储在页外,仅使用20字节记录指针 | 数据被压缩以占用更小的页空间 |
CHAR 长度 | 最大字符字节长度xN | 最少保留N字节,最大为字符字节长度xN。CHAR(N)可变长度字符集会尝试删除尾随空格来存储N字节 | 与COMPACT一致 | 与COMPACT一致 |