在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。
若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。
所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。
row_format还有其他一些值:
DEFAULT
FIXED
DYNAMIC
COMPRESSED
REDUNDANT
COMPACT
修改行格式
ALTER TABLE table_name ROW_FORMAT = DEFAULT
修改过程导致:
fixed--->dynamic: 这会导致CHAR变成VARCHAR
dynamic--->fixed: 这会导致VARCHAR变成CHAR
show TABLE STATUS 该命令用于返回当前库中的所有表概览,通过添加 pattern 可以显示指定表的概览譬如: show TABLE STATUS like 'mytable%'返回信息格式如下:
其中需要注意的是 Row_format 这一列的值。
Row_format 的可能取值有: Fixed, Dynamic, Compressed, Redundant, Compact 等。
Dynamic ,代表行格式为动态行,行长度可变,说明表中存在varchar或text或Blob类型字段。
fixed ,代表固定行,是指行长度不变,说明表中都是int或har类型字段。执行效率高,不容易产生碎片。但char会导致占用固定长度的空间,长度不足时,会填补空格;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)