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業界は楽しそうです.