更改行格式时,为什么我的表格大小没有减少?

时间:2012-11-29 23:00:46

标签: mysql innodb

我们目前正在使用带有innodb的MySQL,我们有一些紧凑的大型表格。当我将行格式更改为压缩时,我们仍然看到表格的大小相同。有人知道这个的原因吗?

1 个答案:

答案 0 :(得分:6)

是否有可能为表声明ROW_FORMAT = COMPRESSED,但是您没有启用配置值innodb_file_format = BARRACUDA?

如果您不执行后一步骤,那么对梭子鱼行格式的任何请求都不会生效。这样的请求会产生警告:

mysql> alter table foo row_format=compressed;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 2

mysql> show warnings;
+---------+------+-----------------------------------------------------------------------+
| Level   | Code | Message                                                               |
+---------+------+-----------------------------------------------------------------------+
| Warning | 1478 | InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
| Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT.                                  |
+---------+------+-----------------------------------------------------------------------+

此外,除非您同时启用innodb_file_per_table

,否则无法使用压缩行格式
mysql> alter table foo row_format=compressed;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 2

mysql> show warnings;
+---------+------+---------------------------------------------------------------+
| Level   | Code | Message                                                       |
+---------+------+---------------------------------------------------------------+
| Warning | 1478 | InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
| Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT.                          |
+---------+------+---------------------------------------------------------------+