行记录格式:
Variable-length offset listrecord_headercol1_valuecol2_value…….text_value字段长度偏移列表记录头信息,占48字节列1数据列2数据…….Text列指针数据
具有以下特点:
- 存储变长列的前768 Bytes在索引记录中,剩余的存储在overflow page中,对于固定长度且超过768 Bytes会被当做变长字段存储在off-page中 。
- 索引页中的每条记录包含一个6 Bytes的头部,用于链接记录用于行锁 。
- 聚簇索引的记录包含用户定义的所有列 。另外还有一个6字节的事务ID(DB_TRX_ID)和一个7字节长度的回滚段指针(Roll pointer)列 。
- 如果创建表没有显示指定主键,每个聚簇索引行还包括一个6字节的行ID(row ID)字段 。
- 每个二级索引记录包含了所有定义的主键索引列 。
- 一条记录包含一个指针来指向这条记录的每个列,如果一条记录的列的总长度小于128字节,这个指针占用1个字节,否则2个字节 。这个指针数组称为记录目录(record directory) 。指针指向的区域是这条记录的数据部分 。
- 固定长度的字符字段比如CHAR(10)通过固定长度的格式存储,尾部填充空格 。
- 固定长度字段长度大于或者等于768字节将被编码成变长的字段,存储在off-page中 。
- 一个SQL的NULL值存储一个字节或者两个字节在记录目录(record dirictoty) 。对于变长字段null值在数据区域占0个字节 。对于固定长度的字段,依然存储固定长度在数据部分,为null值保留固定长度空间允许列从null值更新为非空值而不会引起索引的分裂 。
- 对varchar类型,Redundant行记录格式同样不占用任何存储空间,而CHAR类型的NULL值需要占用空间 。
Compact行格式这种行格式比redundant格式减少了存储空间作为代价,但是会增加某些操作的CPU开销 。如果系统workload是受缓存命中率和磁盘速度限制,compact行格式可能更快 。如果你的工作负载受CPU速度限制,compact行格式可能更慢,Compact 行格式被所有file format所支持 。
行记录格式:
Variable-length field length listNULL标志位record_headercol1_valuecol2_value…….text_value变长字段长度列表
记录头信息-列1数据列2数据…….Text列指针数据
Compact首部是一个非NULL变长字段长度的列表,并且是按列的顺序逆序放置的,若列的长度小于255字节,用1字节表示;若大于255个字节,用2字节表示 。变长字段最大不可以超过2字节,这是因为MySQL数据库中varchar类型最大长度限制为65535,变长字段之后的第二个部分是NULL标志位,表示该行数据是否有NULL值 。有则用1表示,该部分所占的字节应该为1字节 。
所以在创建表的时候,尽量使用NOT NULL DEFAULT '',如果表中列存储大量的NULL值,一方面占用空间,另一个方面影响索引列的稳定性 。
具有以下特点:
- 索引的每条记录包含一个5个字节的头部,头部前面可以有一个可变长度的头部 。这个头部用来将相关连的记录链接在一起,也用于行锁 。
- 记录头部的变长部分包含了一个表示null 值的位向量(bit vector) 。如果索引中可以为null的字段数量为N,这个位向量包含 N/8 向上取整的字节数 。比例如果有9-16个字段可以为NULL值,这个位向量使用两个字节 。为NULL的列不占用空间,只占用这个位向量中的位 。头部的变长部分还包含了变长字段的长度 。每个长度占用一个或者2个字节,这取决了字段的最大长度 。如果所有列都可以为null 并且制定了固定长度,记录头部就没有变长部分 。
- 对每个不为NULL的变长字段,记录头包含了一个字节或者两个字节的字段长度 。只有当字段存储在外部的溢出区域或者字段最大长度超过255字节并且实际长度超过127个字节的时候会使用2个字节的记录头部 。对应外部存储的字段,两个字节的长度指明内部存储部分的长度加上指向外部存储部分的20个字节的指针 。内部部分是768字节,因此这个长度值为 768+20, 20个字节的指针存储了这个字段的真实长度 。
- NULL不占该部分任何空间,即NULL除了占用NULL标志位,实际存储不占任何空间 。
- 记录头部跟着非空字段的数据部分 。
- 聚簇索引的记录包含了所以用户定于的字段 。另外还有一个6字节的事务ID列和一个7字节的回滚段指针 。
推荐阅读
- java 异步编程
- 不同男人的喝茶保健,男人喝什么茶最好
- 老人耳朵听不见怎么办?
- 老人褥疮擦什么药呢
- 老人憋不住尿吃什么药
- 老年人头晕走路不稳
- 啤酒倒出泡沫好还是不倒出泡沫好 倒啤酒该不该倒出泡沫
- 考试|公务员考不进怎么办?有空考个健康管理师,轻松涨工资,满足这2点即可报名
- 衣服染色去除小窍门
- 光环多人模式进不去 光环多人游戏