为了账号安全,请及时绑定邮箱和手机立即绑定

什么是MySQL VARCHAR最大尺寸?

什么是MySQL VARCHAR最大尺寸?

繁花不似锦 2019-08-30 15:41:47
我想知道MySQL VARCHAR类型的最大大小是多少。我读到最大尺寸受行大小约65k的限制。我尝试将字段设置为varchar(20000)但是它说这太大了。我可以把它设置为varchar(10000)。我可以设置的最大值是多少?
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

根据在线文档,有64K行限制,您可以使用以下方法计算行大小:


row length = 1

             + (sum of column lengths)

             + (number of NULL columns + delete_flag + 7)/8

             + (number of variable-length columns)

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


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


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


允许的尺寸为:


TINYTEXT          255 (+1 byte  overhead)

TEXT          64K - 1 (+2 bytes overhead)

MEDIUMTEXT    16M - 1 (+3 bytes overhead)

LONGTEXT      4G  - 1 (+4 bytes overhead)

你仍然有字节/字符不匹配(这样一MEDIUMTEXT utf8列可以“只”存储大约五十万个字符,(16M-1)/3 = 5,592,405)但它仍然会大大扩展你的范围。



查看完整回答
反对 回复 2019-08-30
?
红糖糍粑

TA贡献1815条经验 获得超6个赞


varchar的最大长度取决于MySQL中的最大行大小,即64KB(不包括BLOB):


VARCHAR(65535)但是,请注意,如果使用多字节字符集,则限制较低:


VARCHAR(21844)CHARACTER SET utf8


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 987 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信