2

現在、innodb で MySQL を使用しており、行形式がコンパクトな大きなテーブルがいくつかあります。行フォーマットを圧縮に変更しても、テーブルのサイズは同じままです。この理由を知っている人はいますか?

4

1 に答える 1

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.                          |
+---------+------+---------------------------------------------------------------+
于 2012-11-29T23:17:39.470 に答える