mysql通过行记录怎么判断某个列是否发生了溢出
在mysql中,一行记录数据如果过大,为了满足一个页最少存2条记录,某些列可能会发生溢出
比如有个表t
create table t(c1 varchar(10000) not null) row_format compact;
我向这张表中插入一行数据
insert into t values(repeat('a', 10000));
按照mysql的默认配置,这时c1列就会发生溢出,mysql用一个页来存这个字段768个字节的前缀以及20个字节来记录溢出页的一些信息。
我的问题是,从mysql的记录格式有没有一个标识,说明c1列发生了溢出,这788个字节要按照有溢出的情况来解析。如果没有这么一个标识,mysql是怎么判断某一列发生了溢出?毕竟如果一个页没有发生溢出,也可能刚好这个字段的长度也是788个,比如我插入下面这一条数据应该是不会发生溢出的
insert into t values(repeat('a', 788));
推荐文章: