mysql的InnoDB引擎的行记录格式ROW_FORMAT

mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。

 若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。

 

row_format还有其他一些值:

DEFAULT

FIXED--静态

DYNAMIC--动态

COMPRESSED

REDUNDANT

COMPACT

 

fixed:默认格式,

当表不包含变长字段(varchar / varbinary / blob / text)时使用,

每行都是固定的,所以很容易获取行在页上的具体位置,存取效率比较高,

但是占用磁盘空间较大

dynamic:

每行都有一个行头部,包含bitmap,记录列为空的情况。(字符类型长度为0,或数字类型为0,而不是NULL值)

所有字符串列都是动态存储的,除非长度小于4;

fixed->dynamic : 会导致CHAR->VARCHAR,反之亦然, 

MYISAM引擎可以修改ROW_FORMAT,InnoDB不可以,默认Compact

REDUNDANT为固长,有冗余,COMPACT更灵活

posted @ 2021-02-18 18:00  乌瑟尔  阅读(317)  评论(0编辑  收藏  举报