C++ 版本:https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks Java 版本:https://github.com/facebook/rocksdb/wiki/RocksJava-Performance-on-Flash-Storage 详 ..

leveldb 和 rocksdb 性能对比

本贴最后更新于 875 天前,其中的信息可能已经渤澥桑田

C++ 版本:https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks

Java 版本:https://github.com/facebook/rocksdb/wiki/RocksJava-Performance-on-Flash-Storage


详细的机器配置看上面的链接,强烈建议读一下。

注意:测试使用的是 jemalloc


测试一:将 1B(即 10 亿) 个 key 数据随机批量写入空数据库



rocksdb:   103 minutes, 80 MB/sec (total data size 481 GB, 1 billion key-values)
leveldb:   many many days (in 20 hours it inserted only 200 million key-values)


原因:

rocksdb 其实使用了两步:先做 fillrandom,再做 compact

leveldb 只是使用了一步:fillrandom


测试二: 将 1B个 key数据顺序批量 插入空 数据库



rocksdb:   36 minutes, 370 MB/sec (total data size 760 GB)
leveldb:   91 minutes, 146 MB/sec (total data size 760 GB)
 
Java
fillseq          :     2.48233 micros/op;  311.2 MB/s; 1000000000 ops done;  1 / 1 task(s) finished.


原因:

rocksdb 使用了多线程 compact


测试三:随机覆盖 1B 个 key数据




rocksdb: 15 hours 38 min;  56.295 micros/op, 17K ops/sec,  13.8 MB/sec
leveldb: many many days;  600 micros/op,     1.6K ops/sec, 1.3 MB/sec
          (in 5 days it overwrote only 662 million out of 1 billion keys, after which I killed the test)


原因:

rocksdb 使用了 20 个 compact 线程,使用了 6 个 level,仅了 level 2 及以上启用了 gzip


测试四:随机读取 1B 个 key 数据



rocksdb:  70 hours,  8 micros/op, 126K ops/sec (checksum verification)
leveldb: 102 hours, 12 micros/op,  83K ops/sec (no checksum verification)
 
Java:
readrandom       :     7.67180 micros/op;  101.4 MB/s; 1000000000 / 1000000000 found;  32 / 32 task(s) finished.


配置:rocksdb 额外启用了 checksum,leveldb 关闭了 checksum

原因:rocksdb 没有用 mmaped IOs,这个在某些 linux 平台上会慢。rocksdb 把 block cache 分成了 64 份,以降低锁力度。




测试五:多线程读,同时单线程写



rocksdb: 11 hours 30 minutes, 9.640 micros/read, 103734 reads/sec
leveldb: 20 hours 28 minutes


Java:

readwhilewriting :     9.55882 micros/op;   81.4 MB/s; 100000000 / 100000000 found;  32 / 32 task(s) finished.



配置: rocksdb release 2.7 and leveldb 1.15



PS: RocksDB 的配置,见官网:https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide


中文参考:http://www.jianshu.com/p/ddf652aa4882



  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    1899 引用 • 3628 回帖 • 591 关注
  • 存储
    20 引用 • 34 回帖 • 1 关注
  • rocksdb
    1 引用
回帖   
请输入回帖内容...