首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL VARCHAR最大大小是多少?

MySQL VARCHAR最大大小是多少?
EN

Stack Overflow用户
提问于 2012-11-22 14:13:37
回答 8查看 616.2K关注 0票数 331

我想知道MySQL VARCHAR类型的最大大小是多少。

我读到最大大小受到行大小的限制,行大小约为65k。我尝试将字段设置为varchar(20000),但它显示该字段太大。

我可以将其设置为varchar(10000)。我可以设置的最大值是多少?

EN

回答 8

Stack Overflow用户

发布于 2012-11-22 14:22:07

请记住,MySQL有一个最大行大小限制

MySQL表的内部表示的最大行大小限制为65,535字节,不包括BLOB和TEXT类型。BLOB和TEXT列仅对行大小限制贡献9到12个字节,因为它们的内容与行的其余部分分开存储。阅读有关Limits on Table Column Count and Row Size.的更多信息

单个列可以占用的最大大小在MySQL 5.0.3之前和之后是不同的

VARCHAR列中的

值是可变长度的字符串。在MySQL 5.0.3之前,长度可以指定为0到255之间的值;在5.0.3和更高版本中,长度可以指定为0到65,535之间的值。在MySQL 5.0.3和更高版本中,VARCHAR5.0.3和更高版本的有效最大长度取决于最大行大小(65,535字节,在所有列之间共享)和所使用的字符集。

但是,请注意,如果使用多字节字符集(如utf8或utf8mb4 ),则限制会更低。

使用 TEXT 类型以克服行大小限制。

有四种文本类型: TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。它们对应于四种斑点类型,并且具有相同的最大长度和存储要求。

有关BLOB和文本类型的详细信息,请参阅

MySQLv8.0 https://dev.mysql.com/doc/refman/8.0/en/blob.html

  • 参考

甚至更多

请查看有关Data Type Storage Requirements的更多详细信息,它处理所有数据类型的存储需求。

票数 320
EN

Stack Overflow用户

发布于 2012-11-22 14:22:55

根据the online docs,有64K的行限制,您可以使用以下命令计算行大小:

代码语言:javascript
复制
row length = 1
             + (sum of column lengths)
             + (number of NULL columns + delete_flag + 7)/8
             + (number of variable-length columns)

您需要记住,列长度不是它们大小的一对一映射。例如,对于10个字符中的每个字符,CHAR(10) CHARACTER SET utf8需要3个字节,因为特定的编码必须考虑到utf8的每个字符3个字节的属性(即MySQL's utf8 encoding,而不是“真正的”UTF-8,后者最多可以有4个字节)。

但是,如果行大小接近64K,则可能需要检查数据库的模式。在一个正确设置的(3NF)数据库中,需要那么宽的表是很少见的-这是可能的,只是不是很常见。

如果您想使用更多,您可以使用BLOBTEXT类型。这些不计入行的64K限制(管理内存占用除外),但您需要注意使用它们带来的其他问题,例如无法使用超过一定字符数的整个文本块进行排序(尽管可以向上配置),强制临时表在磁盘上而不是内存中,或者必须配置客户端和服务器通信缓冲区才能有效地处理这些大小。

允许的大小为:

代码语言:javascript
复制
TINYTEXT          255 (+1 byte  overhead)
TEXT          64K - 1 (+2 bytes overhead)
MEDIUMTEXT    16M - 1 (+3 bytes overhead)
LONGTEXT      4G  - 1 (+4 bytes overhead)

您仍然存在字节/字符不匹配的问题(因此,(16M-1)/3 = 5,592,405,一个MEDIUMTEXT utf8列只能存储大约50万个字符),但是它仍然大大扩展了您的范围。

票数 64
EN

Stack Overflow用户

发布于 2013-10-30 22:57:46

Source

变量字符的最大长度以MySQL中的最大行大小为准,最大行大小为64KB (不包括BLOB):

然而,VARCHAR(65535)请注意,如果使用多字节字符集,则限制会更低:

(21844)字符集VARCHAR

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13506832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档