MySQL TEXT内存分配

Sah*_*hee 7 mysql memory

有人知道MySQL如何为"TEXT"或"BLOB"等字段分配磁盘空间

例如,当我将10kb字符串插入"TEXT"列时会发生什么?是分配了整个65kb数据还是只有10kb?

e4c*_*4c5 9

这在文档中进行了解释:http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

BLOB, TEXT              L + 2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT  L + 3 bytes, where L < 2^24 
LONGBLOB, LONGTEXT      L + 4 bytes, where L < 2^32
Run Code Online (Sandbox Code Playgroud)

使用长度前缀加数据存储可变长度字符串类型.长度前缀需要一到四个字节,具体取决于数据类型,前缀的值是L(字符串的字节长度).例如,MEDIUMTEXT值的存储需要L个字节来存储该值加上三个字节来存储值的长度.

简而言之,整个65kb并没有浪费.