隨筆:MySQL中'' ' ' NULL在Innodb儲存的區別
歡迎關注我的《深入理解MySQL主從原理 32講 》,如下:
如果圖片不能顯示可檢視下面連結:
https://www.jianshu.com/p/d636215d767f
一、測試環境
mysql> create table testn(a varchar(20),b varchar(20));
Query OK, 0 rows affected (0.43 sec)
mysql> insert into testn values('','gaopeng');
Query OK, 1 row affected (0.08 sec)
mysql> insert into testn values(' ','gaopeng');
Query OK, 1 row affected (0.12 sec)
mysql> insert into testn values(NULL,'gaopeng');
Query OK, 1 row affected (0.08 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
我們看到包含了3行,包含了3種情況,下面我們分別分析。
二、解析
第一行 insert into testn values(‘’,’gaopeng’);
原始儲存如下:
070000000010002200000014061c000000002fe5bb0000016e011067616f70656e67
- 07 :第2個欄位可變長度7
- 00 :第1個欄位可變長度0
- 00 :NULL點陣圖 沒有NULL欄位
- 0000100022:5位元組固定
- 00000014061c ROWID
- 000000002fe5 TRX ID
- bb0000016e0110 ROLL PTR
- :第一個欄位沒有儲存 字元’’
- 67616f70656e67 :第二個欄位 ‘gaopeng’
第二行:insert into testn values(‘ ‘,’gaopeng’);
原始儲存如下:
070100000018002200000014061d000000002fe6bc0000017901102067616f70656e67
- 07 :第2個欄位可變長度7
- 01 :第1個欄位可變長度1
- 00 :NULL點陣圖 沒有NULL欄位
- 0000180022:5位元組固定
- 00000014061d ROWID
- 000000002fe6 TRX ID
- bc000001790110 ROLL PTR
- 20:空字元’ ‘
- 67616f70656e67 :第二個欄位 ‘gaopeng’
第三行:insert into testn values(NULL,’gaopeng’);
原始儲存如下:
0701000020ffac00000014061e000000002febbf0000017c011067616f70656e67
- 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。
作者微信:gp_22389860
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2663573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL儲存引擎:MyISAM和InnoDB的區別MySql儲存引擎
- MySQL儲存引擎--MyISAM與InnoDB區別MySql儲存引擎
- 總結MySQL儲存引擎MyISAM與InnoDB區別MySql儲存引擎
- MySQL儲存引擎簡介及MyISAM和InnoDB的區別MySql儲存引擎
- Innodb 下null '' ' '的儲存表現的不同Null
- MySQL:Innodb中數字的儲存方式MySql
- MySQL InnoDB儲存引擎MySql儲存引擎
- MySQL之儲存引擎InnoDB和MyISAM的區別及底層詳解MySql儲存引擎
- MySQL提升筆記(4)InnoDB儲存結構MySql筆記
- Mysql 中 MyISAM 和 InnoDB 的區別MySql
- MySQL null值儲存,null效能影響MySqlNull
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- MySQL的varchar儲存原理:InnoDB記錄儲存結構MySql
- MySQL InnoDB 儲存引擎探祕MySql儲存引擎
- MySQL 的 NULL 值是怎麼儲存的?MySqlNull
- MySQL中InnoDB儲存引擎的實現和執行原理MySql儲存引擎
- MySQL資料庫InnoDB儲存引擎中的鎖機制GVMySql資料庫儲存引擎
- 如何透過Hibernate/JPA在MySQL中儲存UTC時區?MySql
- 《MySQL 效能優化》之 InnoDB 儲存引擎MySql優化儲存引擎
- [Mysql技術內幕]Innodb儲存引擎MySql儲存引擎
- MySQL InnoDB儲存引擎體系結構MySql儲存引擎
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- MySQL-07.InnoDB資料儲存結構MySql
- 談談MySQL InnoDB儲存引擎事務的ACID特性MySql儲存引擎
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- MyISAM與innoDB儲存引擎有何差別儲存引擎
- javascrit中undefined和null的區別JavaUndefinedNull
- js中null和undefined的區別JSNullUndefined
- js中undefined和null的區別JSUndefinedNull
- InnoDB儲存引擎鎖機制(二、 鎖的型別)儲存引擎型別
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN
- 十八、Mysql儲存引擎並不只有MyISAM、InnoDB——精髓MySql儲存引擎
- MySQL高階10-InnoDB引擎儲存架構MySql架構
- 每日分享-MySQL-2019-08-05-【InnoDB 儲存引擎】MySql儲存引擎
- 在MySQL中 Truncate Delect Drop 的區別MySql
- mysql儲存引擎InnoDB詳解,從底層看清InnoDB資料結構MySql儲存引擎資料結構
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- 服務端指南 資料儲存篇 | MySQL(02) 儲存引擎的 InnoDB 與 MyISAM 之爭服務端MySql儲存引擎