mysql中varchar最多能存储65535个字节的数据。
varchar 的最大长度受限于最大行长度(max row size,65535bytes)。65535并不是一个很精确的上限,可以继续缩小这个上限。65535个字节包括所有字段的长度,变长字段的长度标识(每个变长字段额外使用1或者2个字节记录实际数据长度)、NULL标识位的累计。
扩展资料
1、varchar存储规则:
mysql4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
mysql5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 。
2、varchar受编码长度限制规则:
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html
InooDB 单行最大不能超过页大小的一半,比如默认 innodb_page_size=16K,则单行不能超过 8k(要减去一些额外信息占用的大小):
如果包含可变长度类型的字段的行超过InnoDB 最大行大小,则 InnoDB 会选择吧可变长度字段存储到外部页(也叫溢出页),直到该行符合InnoDB 行大小限制:
将上述示例 char 类型改为 varchar 类型,则可以突破单行不能超过 8k的限制:
MySQL层单行最大限制(不区分存储引擎)65535 字节:
BLOB 、 TEXT 列仅对行大小限制贡献 9 到 12 个字节,因为它们的内容与行的其余部分分开存储:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)