mysql 栏格式 compact ,compressed, default, fixed, redundant 的差别或者相关介绍文章。

mysql 栏格式 compact ,compressed, default, fixed, redundant 的差别或者相关介绍文章。,第1张

Mysql的row_format

在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会导致占用固定长度的空间,长度不足时,会填补空格;

建议你可以换一个编码,修改表字段的不合理长度,太长的字段,建议使用TEXT或BLOB格式。

会出现这种情况是因为:这个问题可能与不同引擎之间使用的存储格式有关。MyISAM有3种行存储格式:fixed/dynamic/compressed。InnoDb在MyIASM基础上新引入了Barracuda。至于不同引擎的默认设置,以及各种存储格式之间的区别。

具体解决方法如下:

因为我们常用的是MyISAM引擎。

但是新装MySQL后,默认是InnoDb。

移除创建表时的ROW_FORMAT设置。

增加了Engine=MyISAM。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7344375.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存