チョッとしたチューニング。

テーブルにデータをインポートする時には、「LOAD DATA INFILE」を使うのがベストだと思うのですが、
現在携わっているプロジェクトで、1.3GB(2600万件前後)の大容量データを扱う際に
インポート途中で止まってしまうことがしばしば…


これでは作業が全く進まないので、MySQLの設定をいじってみることにしました(・∀・)
(これが世に言う「チューニング」というものなのか…??)


Windowsの場合、MySQLの設定ファイルは「my.ini」で、その中身は…

[mysqld]
basedir=C:¥VertrigoServ¥Mysql
datadir=C:¥VertrigoServ¥Mysql¥data¥
port =3306
key_buffer =12M
max_allowed_packet =1M
table_cache =32
sort_buffer_size =512K
net_buffer_length =8K
read_buffer_size =256K
read_rnd_buffer_size =512K
myisam_sort_buffer_size =8M


[mysqldump]
quick
max_allowed_packet =16M


[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates


[isamchk]
key_buffer =20M
sort_buffer_size =20M
read_buffer =2M
write_buffer =2M


[myisamchk]
key_buffer =20M
sort_buffer_size =20M
read_buffer =2M
write_buffer =2M


[mysqlhotcopy]
interactive-timeout


このうち、[mysqld]の「key_buffer」というものを、初期値の「12M」から「256M」に
変えてみました。
すると、丸一日かかっても終わらなかったインポートが、なんとたったの1時間で完了!!!
感動(´;ω;`)ウッ…
※256Mでも速度がまだ物足りなかったので512Mに上げたら更に速くなりました(・∀・)


ちなみに。
MySQLのリファレンスにも、以下のように書かれていました。

MyISAMテーブルおよびLOAD DATA INFILEとINSERTの両方に対するパフォーマンスの向上には、key_buffer_sizeシステム変数値を上げてキーキャッシュを拡張します。