更改varchar长度时的数据库容量(mysql)

更改varchar长度时的数据库容量(mysql),mysql,database,Mysql,Database,最近我的排序规则从latin1更改为utf8 由于utf8的大小较长,因此存在长度错误。 在更改排序规则之前,字段类型是varchar(50),现在我将扩展到varchar(255) 在这种情况下,数据库的容量也会扩展,这可能会出现数据库容量限制错误 另外,如果我插入包含小于varchar(255)的字段的记录,它是否需要全部varchar(255)容量 有人帮忙吗?MYSQL网站上说没有 使用varchar时,实际存储是动态分配的,并且仅由存储到其中的字符数决定 虽然不是直截了当的,但以VAR

最近我的排序规则从
latin1
更改为
utf8

由于
utf8
的大小较长,因此存在长度错误。
在更改排序规则之前,字段类型是
varchar(50)
,现在我将扩展到
varchar(255)

在这种情况下,数据库的容量也会扩展,这可能会出现数据库容量限制错误

另外,如果我插入包含小于
varchar(255)
的字段的记录,它是否需要全部
varchar(255)
容量


有人帮忙吗?

MYSQL网站上说没有

使用varchar时,实际存储是动态分配的,并且仅由存储到其中的字符数决定

虽然不是直截了当的,但以VARCHAR(255)和VARCHAR(500)为例,即使在这样的列中放置1个字符。行末尾追加的值将是一个整数,用于存储存储数据的实际长度

因此,在VARCHAR(255)的情况下,它将是额外的1个字节,VARCHAR(500)将是2个字节

这是一个微小的区别


我相信,虽然我没有数据来备份它,但是varchar长度越短,索引查找性能越好

那么为什么它的长度参数像varchar(255)或varchar(500)?没有标明尺寸是否有问题?有什么区别?只是有不同的限制?mysql支持varchar(max),但是,在其中放入一个大小有助于mysql“了解”优化数据,索引etci已经做了一些阅读,我在以前的文章中发现了这一点实际上,从访问角度看,这会产生巨大的差异,因为当MySql在内存中创建结果集时,它会将结果集转换为矩阵,因此,如果最大字段为16个字符,但字段定义为128个字符,则必须为每行分配额外的112个字符。这会浪费大量内存Kris Erickson 7月20日,我不知道这是不是真的,但它有意义,我也不知道它是由添加的最大字段数据长度决定的,还是由varchar中设置的大小决定的。