データのインポートを早くする
mysqldumpコマンドでダンプしたデータをインポートする時、データ量が多いと非常に時間がかかる。
少しでも時間を縮める方法がないかと思って探したら発見しました。
InnoDBのリストアを高速化 - MySQL Practice Wiki
なるほど、MySQLのオプションを変更すれば早くなるわけか。
早速試してみた。
/etc/mysql/my.cnfに以下の二行を追加
skip_innodb_doublewrite innodb_flush_log_at_trx_commit=0
で、MySQLを再起動
下みたいな感じのテーブルに
root: [test] > describe test; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | value | int(11) | NO | | NULL | | +-------+---------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
200万件のデータをインポートするのにかかる時間を計ってみた。
Before
/home/shizm% date 2010年 12月 14日 火曜日 18:38:03 JST /home/shizm% mysql -ushizm -p test < sample_data.sql /home/shizm% date 2010年 12月 14日 火曜日 18:39:51 JST
After
/home/shizm% date 2010年 12月 14日 火曜日 18:42:41 JST /home/shizm% mysql -ushizm -p test < sample_data.sql /home/shizm% date 2010年 12月 14日 火曜日 18:42:53 JST
かなりめちゃくちゃ早くなった。ひゃっほー!