一句话解释在 MySQL InnoDB 中,COMPRESSED, COMPACT 和DYNAMIC 区别
网上长篇大论解释mysql表的行格式 COMPRESSED, COMPACT 和DYNAMIC 区别非常多,这里我简单说说,可能有些片面,大概意思就是意思:
mysql5.0之后的默认行格式为Compact , 5.7之后的默认行格式为dynamic
COMPACT 格式由 Antilope 支持。它存储前 768 个字节的 BLOB,以防其值不适合页面。
Compact行记录是在MySQL 5.0时被引入的,其设计目标是能高效存放数据。简单来说,如果一个页中存放的行数据越多,其性能就越高。
Barracuda文件格式下拥有两种新的行记录格式Compressed和Dynamic两种。新的两种格式对于存放BLOB的数据采用了完全的行溢出的方式,在数据页中只存放20个字节的指针,实际的数据都存放在BLOB Page中,而之前的Compact和Redundant两种格式会存放768个前缀字节。
DYNAMIC 与 COMPACT 几乎相同,但每个 BLOB 字段仅使用 20 个字节。优势 - 记录中可能有更多的 BLOB 字段
COMPRESSED:压缩数据,文本字段压缩效率非常高
Compressed行记录格式的另一个功能就是,存储在其中的行数据会以zlib的算法进行压缩,因此对于BLOB、TEXT、VARCHAR这类大长度类型的数据能进行非常有效的存储。