MySQL/InnoDB插件:VARCHAR字段的NULL值是否仍会占用存储空间?

Con*_*ion 6 mysql database null varchar innodb

我正在使用Barracuda文件格式的InnoDB插件:

ROW_FORMAT=DYNAMIC

如果我将一个字段定义为VARCHAR(255),然后插入一个具有NULL该字段值的记录,那么该记录是否仍会在该VARCHAR字段的存储空间中使用255个字节?或者不会浪费存储空间?

在相关的说明中,如果我定义一个字段,INT那么大概每个记录仍然会为该字段使用32位,即使它的值是NULL.那是对的吗?

谢谢

Abh*_*hay 6

我认为这应该回答你的问题 -

SQL NULL值在记录目录中保留一个或两个字节.除此之外,如果存储在可变长度列中,则SQL NULL值在记录的数据部分中保留零个字节.在固定长度的列中,它在记录的数据部分中保留列的固定长度.为NULL值保留固定空间可以将列的更新从NULL更新为非NULL值,而不会导致索引页碎片化.

请查看有关数据类型存储要求InnoDB物理行结构的更多信息