MySQL记录存储格式
引言
我们每天都在和MySQL数据库打交道,例如新建一个数据库testDataBaseA,在数据库A中新建一张表testTableB,紧接着,一行一行的数据被插入到testTableB表中,那么问题来了,这些数据是以何种形式存储在数据库中呢?带着这个疑问,我们开始本文的旅程。
Compact行格式
Compact行格式是InnoDB存储引擎的常用行格式。行格式是真实的记录信息在数据库中存储的样式,Compact行格式用四部分信息表示一条完整的数据记录:
1.变长字段
变长字段是指varchar这些可以指定存储范围的属性,例如name varchar(30),name这个列存储的字节不确定,所以称之为变长字段,对于变长字段,Compact行格式有专门的变长字段来记录。如果新建的表中没有变长字段,则行格式中这部分不存在。
2.NULL值列
对于列的值允许为空的情况,行格式统一用NULL值列来管理这些列。
3.记录头信息
记录头信息中记录了记录是否被删除;该记录拥有的记录数;指向下一条记录的指针等。
4.真实列信息
真实列信息顾名思义就是用户自定义的列(实际在业务中使用的字段)。但是在每条记录的前面会有MySQL给我们生成的三个字段,如果我们没有指定主键,MySQL会为我们生成一个隐藏的DB_ROW_ID,MySQL会为每一行生成一个事物ID和一个回滚指针,紧跟着才是用户自定义的列信息。
网友评论