char与varchar占用_MySQL笔记
char与varchar占用
广义上,char(m) 占用那个字节,varchar(m) 最多占用 m 个字节,由占用字节和记录长度的字节组成。
ps:以下皆在使用 InnoDB 时,在 COMPACT 格式下的情况
varchar(m) 与 varchar(2m)的区别
InnoDB行格式类型(Compact格式)
Compact行格式示意图:
varchar 占用构成
varchar是变长字段,由真正的数据内容和该数据占用的字节数组成。
而数据占用的字节数存储在变长字段列表如(下图), ps:这个长度在变长字段列表逆序存放。
varchar(m) 长度在变长字段列表的占用
varchar(m) 允许占用 m * n (n 取决于编码字符集使用多少个字节表示一个字符), 当其实际占用 i 个字节时
1 |
|
char(m) 一定是占用 m 个字节吗?
仅当使用定长编码字符集(如 ascii )的时候,才是固定占用m个字节。
当使用变长编码字符集的时候,会像 varchar 一样在变长字段长度列表中存储占用的字节长度。例如:当使用 utf8 字符集的时候,varchar(m) 占用字节长度在m3m。(utf8表示一个字符占用13个字节)。
char与varchar占用_MySQL笔记
http://lanfunoe.site/2022/11/06/char与varchar占用-MySQL笔记/