mysqldumpを速くする(その2)

By | 2013年5月14日

nigaraです。

MySQLには複数のエンジンがありますが、トランザクションが必要もしくは行単位のロックが必要ならInnoDB、それらが不必要ならMyISAMという感じで選択されている方が大多数だと思います。

で、InnoDBはファイル容量も多いので当然ながらdumpもリストアも時間が掛かります。同一のdumpでリストア結果が以下になります。

InnoDB MyISAM
real 30m46.449s
user 1m59.186s
sys 0m5.185s
real 25m8.772s
user 2m5.125s
sys 0m5.377s

2割弱くらいMyISAMの方が速いですね。だからといってエンジンを変えることは仕様的に出来ない場合が多いので何ら活用する状況もないですが・・・。ただリストア目的がサイトの復旧では無く、データの集計など一時的な活用であればInnoDBを使わないと作業が捗る事になるでしょう。

なお、InnoDBを使用不可にする設定はmy.cnfの[mysqld]に「skip-innodb」を追加すれば、dumpファイルにInnoDBが記述されていてもMyISAMでテーブルが作成されます。

あとリストアの速さ以外にもInnoDBからMyISAMに変更するとファイル容量の削減に寄与します。以下も先ほどのdumpからのリストア時の容量ですが

InnoDB MyISAM
21G 8.1G

半分以下になってます。集計作業などで仮状態の作成であれば、MyISAMを使う方が大きなデータだと楽できるかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です