データベースへのデータ取り込みを速くしたいです。 すでにactiverecord-importを使っているので、これが速くできると嬉しいです。
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 に書きました。