MySQL原理 - InnoDB引擎 - 行记录存储 - Off-page 列,深入讲解Java

对于定长字段,不需要存长度信息直接存储数据即可,如果不足设定的长度则补充。例如 char 类型,补充 0x20, 对应的就是空格。varchar 存储:因为数据开头有可变长度字段长度列表,所以 varchar 只需要保存实际的数据即可,不需要填充额外的数据。但是我们还没有考虑存储特别长数据的情况Redundant 格式结构与 Compact 格式的区别:所有字段长度列表:不同于 Compact 行格式,Redundant 的开头是所有字段长度列表:记录所有..
摘要由CSDN通过智能技术生成
  • 对于定长字段,不需要存长度信息直接存储数据即可如果不足设定的长度则补充。例如 char 类型,补充 0x20, 对应的就是空格。

  • varchar 存储:因为数据开头有可变长度字段长度列表,所以 varchar 只需要保存实际的数据即可,不需要填充额外的数据。但是我们还没有考虑存储特别长数据的情况

  • Redundant 格式结构与 Compact 格式的区别:

  • 所有字段长度列表:不同于 Compact 行格式,Redundant 的开头是所有字段长度列表:记录所有字段的长度偏移,包括隐藏列。偏移就是,第一个字段长度为 a,第二个字段长度为 b,那么列表中第一个字段就是 a,第二个字段就是 a + b。所有字段倒序排列

  • 记录头信息:固定 6 字节

  • 无用位:2 bits,目前没用

  • deleted_flag:1 bits,标识记录是否被删除

  • min_rec_flag:1 bits,是否是 B+ 树中非叶子节点最小记录标记

  • n_owned:4 bits,记录对应的 slot 中拥有的记录数量

  • heap_no:13 bits,该记录在堆中的序号,也可以理解为在堆中的位置信息

  • n_field:10 bits,该记录的列数量,范围从1到1023

  • 1byte_offs_flag:1 bit,1 代表每个字段长度的存储为 1 字节,0 代表 2 字节

  • next_record 指针:16 bits,页中下一条记录的相对位置

  • 数据列

  • CHAR 类型存储:无论字段是否为 NULL,或者长度是多少,char(M) 都会占用 M * 字节编码最大长度那么多字节。为 NULL 的话,填充的是 0x00,不为 NULL,长度不够的情况下,末尾补充 0x2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值