myrocks store format 举例

create table coltypes(
c1 int not null,
c2 int,
c3 char(10) not null,
c4 char(10),
c5 varchar(10) not null,
c6 varchar(10),
c7 blob not null,
c8 blob,
primary key c1
) comment="ttl_duration=1,ttl_col=c1" engine=RocksDB

mysql 在上层中构造一个 char * buf 然后调用 handler::write_row 插入

           

8byte has_ttl unpack_infoNullable bitmap 定长
4byte
     定长 
字符集相关
      定长
字符集相关
size # data
变长 # 定长
size # data 
变长 # 定长
size # data
变长 # 定长
size # data
变长 # 定长
8+32+32bit
     定长

ttl

   c2     c3 c4 c5  c6c7c8crc32 option

说明:

unpack_info 

是可选的,是一些 unpack 的信息

只有

ttl:

如果comment里有ttl,才添加ttl

nullable bitmap 计算方式

ptr[m_null_offset] |= m_null_mask(0x1 << n) 如果 等于 0x80 总byte 数加一,总字节数等于count(nullable fields)+7/8

for(Field f:fields){ 
 uchar cur_null_mask=0x1; 
   if(f.maybe_null()){ 
              if(cur_null_mask == 0x80)
                      cur_null_mask=0x1; 
                      null_bytes++; //这个表示总共字节数
            else
                     cur_null_mask<<=1; 
   }
  else {
          m_null_mask=0; 
  }
}

if (cur_null_mask != 0x1) 
         null_bytes++;


c5,c4

存入格式为:1 or 2 byte(store data size)+ data

c7,c8

存入格式为: 1 -4 byte(store data size) + data


crc

为随机 如果下面函数为TRUE -> m_store_row_debug_checksums && (rand() % 100 < m_checksums_pct),则有 crc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值