IBM solidDB 物理结构研究

2022-04-07 00:00:00 字段 字节 第二个 值为 高位

solidDB 中表的存储方式分为两种 内存表(M表),磁盘表(D表)。
D表中的 INTEGER INT两数据类型的存储方式有点特别。一字节有8位,高位是符号位,如果是1则为正,是0则为负。小于120大于等于0的正数的高位为1,其他位不变,则是他存储的数值,如 0的存储值是0x80,1的存储值是0x81。
如果大于等于120小于375,存储的时候则需要2个字节,字节为F8,就是120的高位为1,第二个字节则是这个值减去120所剩下的值。比如120的存储值为F8 00 ,121的存储值为 F8 01 ,130的存储值为 F8 0A, 375的存储值为 F8 FF;
如果大于等于376小于65656,存储的时候需要3个字节,字节为F9, 就是121的高位为1,121比120多1,(领会精神,表达的可能不准确)这里的1代表的是第二个字节的单位256。比如376的存储值为F9 01 00,01*256+120=376. 第三个字节代表个位,原始值-01*256-120=第三个字节。比如377才存储值为F9 01 01,378的存储值为F9 01 02;65655的存储值为F9 FF FF.
如果大于等于65656,存储要4个字节,个字节FA, 就是122高位为1,122比120多2,也就是说第二个字节的单位是256*256,第三个字节的单位是256,第四字节的单位是1. 如,65656 存储值为FA010000,65657的存储值为FA010001,65658的存储值为FA010008;
负数的存储方法还没看,只知-1存储值为0x7F,也就是0的存储值0x80-1;

D表 一条记录的存储结构。个字节,整条记录的长度,如果是FF或FE,紧接着4个字节是 整条 记录的长度
第二个字节,字段值的长度, 如果是FF或FE,紧接着4个字节是字段值 的长度
然后字段值,
然后再是字段值的长度,字段值。
一般一条记录的个字段是ROWID.
————————————————
版权声明:本文为CSDN博主「狼_夏天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/langzxz/article/details/9085627

相关文章