Google LevelDBのシングルスレッドライト

前回のベンチマークで,Google LevelDBは複数スレッドから書きこむと,ロックの影響で非常に遅くなることが分かりました.
最速KVS研究第Redis V.S. LevelDB - なぜか数学者にはワイン好きが多い

でも,複数スレッドからの読み込みは,スレッドが多くなるとちょっと速くなってます...じゃあ,書き込みはシングルスレッドで,読み込みを複数スレッドでやるとどうなるか...ってのを,やっぱり全く目的も構成も違うRedisとの比較でやってみました.

水色の線を見て下さいまし.LevelDBは書き込みを敢えてシングルスレッドにしたので,誤差を除けば値は変わらず水平に近い線になっております.

まず,バリューの長さが100バイト.get+setの速度が,スレッドが1の時はLevelDBが速く,読み込みスレッドが増えるにつれRedisに追いつかれてきています.

次に,バリューの長さが1000バイト.スレッドが増えるとLevelDBがRedisに追い抜かれました.


これらの実験結果及びあのGoogleが作ったということから,LevelDBは間違いなくドメインスペシフィックであると分かるのですが,チューニングパラメータが大量にあってまだまだ遊ぶことができそうです.

Redisが相当に速いのは分かりますし,LevelDBもまだまだチューニング可能,Kyoto Tycoon/Kyoto Cabinetも恐ろしく性能が良い,memcachedやlibmemcachedも新バージョンが出つつあると,まだまだNoSQL業界は楽しそうです.