InnoDB(4)行溢出--mysql从入门到精通(九)

2023-01-30 00:00:00 数据 字节 溢出 字符集 真实

上篇文章说了compact行格式中真实数据存储,真实数据innoDB会默认添加transaction_id事务id,roll_pointer回滚指针,其中row_id不是必须的,当用户设置了primery key主键默认用用户设置的,没设置,找一个unique列,若都没有,则会用row_id。

还说了char(M)类型存储,若是变长字符集,比如gbk,utf8,则会存储在变长字段长度列表,固定字符集则不会,而且需要注意的是,默认会在内存中占据M的字节。

行溢出数据

Varchar(M)类型多存储多大?65535个字节,如果使用ascii字符集,一个字符代表一个字节,如果创建的话则会如下:

mysql> create table max_size(
    ->   c varchar(65535)
    -> ) charset=ascii row_format=compact;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

相关文章