MySQL中'' ' ' NULL在Innodb存储的区别

导读

作者:高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列文的作者。

想阅读八怪源码文章欢迎订阅

本文建议横屏观看,效果更佳

一、测试环境

我们看到包含了3行,包含了3种情况,下面我们分别分析。

二、解析

原始存储如下:

  • 07:第2个字段可变长度7

  • 00 第1个字段可变长度0

  • 00 NULL位图 没有NULL字段

  • 0000100022: 5字节固定

  • 00000014061c ROWID

  • 000000002fe5 TRX ID

  • bb0000016e0110 ROLL PTR

  • 第一个字段没有存储 字符”

  • 67616f70656e67 第二个字段 ‘gaopeng’

原始存储如下:

  • 07 第2个字段可变长度7

  • 01 第1个字段可变长度1

  • 00 NULL位图 没有NULL字段

  • 0000180022 5字节固定

  • 00000014061d ROWID

  • 000000002fe6 TRX ID

  • bc000001790110 ROLL PTR

  • 20 空字符’ ‘

  • 67616f70656e67 第二个字段 ‘gaopeng’

原始存储如下:

  • 07:第2个字段可变长度7

  • 01: NULL位图为为00000001 表示第一个字段为NULL

  • 000020ffac 5字节固定

  • 00000014061e ROWID

  • 000000002feb TRX ID

  • bf0000017c0110 ROLL PTR

  • 第一个字段NULL

  • 67616f70656e67 第二个字段 ‘gaopeng’

三、总结

  • ”不做存储,但是会记录可变长度的长度为0,NULL位图本位为0。

  • NULL不做实际存储,也不会记录可变长度,但是NULL位图本位为1。

  • ‘ ‘ 做存储为0X20,记录可变长度为01,NULL位图本位为0。

如何方便的查看数据文件参考文章: MySQL:如何快速的查看Innodb数据文件

END

识别下方二维码添加作者为好友

扫码加入MySQL技术Q群

(群号: 650149401)

点“在看”给我一朵小黄花