繁体   English   中英

MySQL数据类型中的内存分配?

[英]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 注意:我说的是“字符”,而不是“字节”。 对于asciilatin1 ,一个字符占用一个字节。 但是对于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM