27 磁盘文件中, 40个bit位的数据头以及真实数据是如何存储的?
2023/2/27大约 1 分钟
每一行数据存储的时候,还得有40个bit位的数据头,这个数据头是用来描述这行数据的。
这40个bit位里,第一个bit位和第二个bit位,都是预留位,是没任何含义的。
然后接下来有一个bit位是delete_mask,他标识的是这行数据是否被删除了,在MySQL里删除一行数据的时候,未必是立马把他从磁盘上清理掉,而是给他在数据头里搞1个bit标记他已经被删了。
然后下一个bit位是min_rec_mask,这个bit位大家现在先不用去关注,他其实就是说在B+树里每一层的非叶子节点里的最小值都有这个标记。
接下来有4个bit位是n_owned,这个暂时我们也先不用去管他,他其实就是记录了一个记录数。
接着有13个bit位是heap_no,他代表的是当前这行数据在记录堆里的位置。
然后是3个bit位的record_type,这就是说这行数据的类型:0代表的是普通类型,1代表的是B+树非叶子节点,2代表的是最小值数据,3代表的是最大值数据
最后是16个bit的next_record,这个是指向他下一条数据的指针。
图示