您的位置:宽带测速网 > mysql教程 > Innodb下null '' ' '的存储表现有什么不同

Innodb下null '' ' '的存储表现有什么不同

2025-06-24 08:04来源:互联网 [ ]

    null :nullbits 位图上的区别。

    ‘’:可变字节多一个字节。

    ‘ ‘:可变字节多一个字节且实际数据区域为0X20多一个字节。

    如下语句:

    mysql>showcreatetabletestnull1\G***************************1.row***************************Table:testnull1CreateTable:CREATETABLE`testnull1`(`id`int(11)DEFAULTNULL,`name`varchar(20)DEFAULTNULL,`name1`varchar(10)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=latin11rowinset(0.00sec)mysql>insertintotestnull1values(1,'gaopeng','gaopeng');QueryOK,1rowaffected(0.22sec)mysql>insertintotestnull1values(1,'','gaopeng');QueryOK,1rowaffected(0.22sec)mysql>insertintotestnull1values(1,null,'gaopeng');QueryOK,1rowaffected(0.22sec)mysql>insertintotestnull1values(1,'','gaopeng');QueryOK,1rowaffected(0.22sec)mysql>select*fromtestnull1;+------+---------+---------+|id|name|name1|+------+---------+---------+|1|gaopeng|gaopeng||1||gaopeng||1|NULL|gaopeng||1||gaopeng|+------+---------+---------+4rowsinset(0.00sec)

    主要观察第2,3,4行。

      第二行:

      07 00:2字节可变字段长度,第二个00代表name 字段的长度,这里’’长度是0
      00: null位图
      0000180025:fixed extrasize
      0000012065100000000ec9e9b1000014210110:rowid+trx_id+rollback_ptr
      80000001:数据1
      67616f70656e67:数据‘gaopeng’

        第三行

        07:1字节可变长度
        02:null位图
        0000200026:fixed extrasize
        0000012065110000000ec9eeb4000014060110:rowid+trx_id+rollback_ptr
        80000001:数据1
        67616f70656e67:数据‘gaopeng’

          第四行

          0701:2字节可变长度,01代表是name字段长度
          00:null位图
          000028ff78:fixed extrasize
          0000012065120000000ec9f0b6000014040110:rowid+trx_id+rollback_ptr
          80000001:数据1
          20:数据’ ‘
          67616f70656e67:数据‘gaopeng’