InnoDB和大多数行式数据库一样,记录以行的格式存储,它提供了两种格式:Compact和Redundant
Compact
Compact格式是在MySQL5.0时才被引入,它是新的行格式,其设计目标是高效存放数据,示意图如下:
1)变长字段长度列表。按列的逆序放置,当列长度小于255字节,用1字节表示,若大于255字节,用2个字节表示,至多为2字节(这也很好解释了InnoDB中varchar的最大长度为什么是65535,因为2个字节为16位,2的16次方-1)。注意,对于固定长度字段(如char),是不需要记录其长度的。
2)NULL标志位。指示该行中的列是否为NULL,1表示NULL。
3)记录头信息。固定占用5个字节(40位),每位代表的含义如下表所示:
4)最后就是实际存储的该行每列的数据了,注意:NULL不在该部分中占用存储。
5&#