美文网首页
行的格式

行的格式

作者: lsh的学习笔记 | 来源:发表于2020-05-04 18:08 被阅读0次

    注意:这里只讨论InnoDB引擎。

    1. 分类

    按时间分为:

    • 旧格式:Redundant
    • 新格式:Compact

    按文件类型分:

    1. 旧文件格式:Antelope
      a. Redundant;
      b. Compact;
    2. 新文件格式:Barracuda
      a. Compressed;
      b. Dynamic;

    2. Compact

    4-2

    变长字段长度列表

    一个列表:记录非null变长字段长度。列表的顺序是跟列的顺序相反。
    比如:a(32),b(64),c(16),d(128) 4个varchar字段存储顺序为d,c,b,a。

    因为varchar类型的最大长度限制为65535,所以记录长度:

    1. 若列的长度小于255字节,用1字节表示;
    2. 若大于255字节,用2字节表示。

    NULL标志位

    1. 和列相反的顺序。
    2. 不管是char类型还是varchar类型,在Compact格式下null值都不占用任何存储空间。

    举例:

    1. a,b,c,d,e,f,g,h 共8个列,其中f,g 为null,
    2. 那么存储的值即为 0000,0110,即 06。

    记录头信息

    固定占用5字节(40位)。

    Compact记录头信息

    列数据

    1. 隐藏列:事务ID列回滚指针列rowid列(没有定义主键时才有)
    2. NULL不占此部分任何空间,只占用上面的NULL标志位。
    3. 固定长度char类型字段如果没用完,会用0x20填充。

    3. 行溢出数据

    1. varchar(N)中的N指的是:字符长度。文档中说的单位是字节。
    2. 一行中所有列的长度总和不能超过65535
    3. 保证每页至少存2行(否则失去了B+Tree的意义,变成链表了)。
    4. 每页16KB=16384字节,如溢出,数据存 Uncompress BLOB页。
    5. 如果varchar长度等于8098,存2行,就不会溢出到BLOB页。

    Antelope

    4-4

    Barracuda

    4-5

    相关文章

      网友评论

          本文标题:行的格式

          本文链接:https://www.haomeiwen.com/subject/nmjyghtx.html