[英]Memory allocation in MySQL datatypes?
我是MySQL的新手。 我对数据类型的内存分配有些困惑。 如果我将类型初始化为bigint,它将占用8个字节的内存。 如果我初始化bigint(10),它将占用80个字节或具有限制的相同8个字节。 在数据类型上初始化10有什么用? 而且我也对varchar感到困惑。 varchar(10)和varchar(100)的内存大小是多少? 内存大小会有所不同吗? 我正在使用InnoDB引擎。
不为NULL
时,数字数据类型占用固定的空间量。
VARCHAR(n)
的长度为1或2个字节,再加上余量,可容纳的字符数最多为n
。 注意:我说的是“字符”,而不是“字节”。 对于ascii
和latin1
,一个字符占用一个字节。 但是对于utf8
,一个字符最多占用3个字节。
VARCHAR(10) CHARACTER SET utf8
将占用1个字节(对于空字符串)和32个字节。
VARCHAR(100) CHARACTER SET utf8
将占用2个字节至302个字节。
VARCHAR(255) CHARACTER SET utf8
将占用2个字节至767个字节。
CHAR(10) CHARACTER SET utf8
将始终占用30个字节。 因此, VARCHAR
通常是比CHAR
更好的选择。
NULL
是特殊情况,几乎不占用空间。 相关评论:我应该使用... NOT NULL
并使用''
吗? 还是使用NULLs
? 空格的区别不如语义重要。 在适合您的应用时使用NULL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.