@ledsun blog

無味の味は佳境に入らざればすなわち知れず

activerecord-importのチューニング(失敗編)

データベースへのデータ取り込みを速くしたいです。 すでにactiverecord-importを使っているので、これが速くできると嬉しいです。

GitHub - zdennis/activerecord-import: A library for bulk insertion of data into your database using ActiveRecord.

The import method can take an array of column names (string or symbols) and an array of arrays. Each child array represents an individual record and its list of values in the same order as the columns. This is the fastest import mechanism and also the most primitive.

なるほど、Columns and Arraysを使うと最も高速なようです。 やってみましょう。

Before

     user     system      total        real
20.442901   1.040183  21.483084 (324.190839)

After

     user     system      total        real
13.827995   1.160921  14.988916 (358.870193)

totalは速くなりました。 realはむしろ遅くなりました。 なるほどRubyで処理する時間は短くなりました。 一方SQLの実行待ちは速くなりませんでした。

そもそもRubyに掛かっている時間(realとtotalの比率)が10分の1もないのに、そこが速くなっても効果はありませんね。

ちなみにBeforeはActiveRecordインスタンスを作っています。 計測に使ったスクリプト処理時間計測用のRubyスクリプト - @ledsun blog に書きました。