InnoDB を ARCHIVE ENIGINEに変えてみた

ALTER TABLEでパーティショニング

alter table foobar_log
PARTITION BY RANGE (TO_DAYS(ins_date)) (
  PARTITION p20120501 VALUES LESS THAN (734989),
  PARTITION p20120502 VALUES LESS THAN (734990),
  PARTITION p20120503 VALUES LESS THAN (734991),
  PARTITION p20120504 VALUES LESS THAN (734992),
  PARTITION p20120505 VALUES LESS THAN (734993),
  PARTITION p_max VALUES LESS THAN MAXVALUE
);

InnoDBからARCHIVE ENGINEに

alter table foobar_log ENGINE=ARCHIVE;
ERROR 1069 (42000): Too many keys specified; max 1 keys allowed

ARCHIVE ENGINEは1 KEYのみサポートなので怒られた

show index from foobar_log;
alter table foobar_log drop index hoge_level;
alter table foobar_log drop index bar_age;

ARCHIVE ENGINEに変更

alter table foobar_log ENGINE=ARCHIVE;
Query OK, 20093910 rows affected (13 min 29.84 sec)
Records: 20093910  Duplicates: 0  Warnings: 0

圧縮前に約7.8Gだったものが圧縮後には約632Mほどに。
他のテーブルもいくつかやってみたところ200%超の圧縮率になるものもあった。

適当なログ用のテーブルをやってみたけどログデータの保管に向いてるとは本当みたいです。
DELETEできないのはパーティショニングでカバーできそう。
UPDATE/REPLACEはないし。

InnoDB Pluginによる圧縮もやってみたけど圧縮率という意味ではARCHIVEのほうが良いです。
InnoDBの特性をそのままに圧縮もしたいというならPluginによる圧縮のほうが良いと思いました。
わかってた事だけど要は使い道次第ってことですね。