Cassandraのinsertを計測する

データの大きさを変えるとinsertが遅くなってしまったので,もうちょっと細かく計測してみることにした.

計測方法

データの大きさを1バイトから10kバイトまで変えながらinsert.
それぞれ1000回繰り返した時の時間を計測.

require 'benchmark'
require 'rubygems'
require 'cassandra'

client = Cassandra.new('MyKeyspace', 'server:9160')

0.step(10000, 100) do |data_size|
  puts Benchmark.measure {
    1000.times { client.insert(:Scores, "Dan", {"cource" => {"math" => rand(10 ** data_size)}}) }
  }
end

実行結果

 0.470000   0.020000   0.490000 (  0.728000)
 0.500000   0.050000   0.550000 (  0.712000)
 0.550000   0.010000   0.560000 (  0.736000)
 0.580000   0.020000   0.600000 (  0.768000)
 ...
 というのが延々と続く

これじゃ何だかさっぱりなので,グラフにする.

※縦軸は1回当たりの数値と見なすために1000で割っています.


user total realはほぼ一致していた.ただ,データサイズが大きくなるとその分遅くなる傾向になる.
ついでに,デフォルトだとConsistencyがONEなので,ZEROにした場合のデータも取ってみた.

ONEの時と全く変わらず...