mysql internal_MySQL Internal - InnoDB存储引擎(行结构)

本文详细介绍了InnoDB存储引擎中行存储的结构,包括Field Start Offsets、Extra Bytes和Field Contents三大部分。Field Start Offsets保存了字段的偏移量信息,Extra Bytes包含了如删除标志、字段数量等关键信息,而Field Contents则包含实际的列数据。此外,还探讨了如何根据这些信息解析行数据,以及NULL列的表示方式。
摘要由CSDN通过智能技术生成

InnoDB行存储的三个组成部分(说明: F字符表示列的数量)

名称(Name)

大小(Size)

Field Start Offsets

(F*1) or (F*2) bytes

Extra Bytes

6 bytes

Field Contents

取决于内容

1: FIELD START OFFSETS

指在实际数据存储行中每一字段(entry,实际存储不只是包括列,还有额外信息)的位置偏移量信息列表,这个位置由原点(Origin)相对位置和下一个字段计算而来。该列表保存的行中每一字段的偏移信息为倒序的,也就是说行中第一字段信息在这个列表的最后。

举个例子:假设有三个列,第一个列的长度为1字节,第二个为2字节,第三个为4字节,这种情况下,保存三个列的偏移信息分别为[1,3(1+2),7(1+2+4)],列表倒序,转储的Field Start Offsets的信息应该为[07,03,01].

有两种的特殊复杂情况:

1:偏移量数字可能为一个或两个字节,一个字节最多允许长度为127,最高位bit用来保存是否为NULL,"Extra Bytes"部分说明了偏移量为一个字节还是两个字节。

2:偏移量可能有一个标志信息,剩下的字节空间包含两个段,指具体的内容。(可能这些内容并不在同一个页中,参考后面的分析)

当偏移量为一个字节时:

1 bit = NULL

7 bit, 实际的偏移信息

当偏移量为两个字节时&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值