Linux下RocksDB、LevelDB、ForestDB性能測試對比


簡要說明

本次環境與http://www.cnblogs.com/oloroso/p/6306352.html中的一致。
依然是增刪查改各測試10000次,每個測試重復5次取平均值。

1、不使用jemalloc和tbb測試

三個數據庫除了rocksdb之外,默認都不使用jemalloctbb
設置rocksdb的編譯參數為make static_lib -e DISABLE_JEMALLOC=1 -j8,以便不啟用jemalloc

三個測試代碼的編譯命令如下:

g++ rocksdb_test.cpp  -o rocksdb_test  -I./include  -L. -lrocksdb -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -llz4 -O2
g++ leveldb_test.cpp  -o leveldb_test  -I../include -L. -lleveldb -O2 -Wl,-rpath=. 
g++ forestdb_test.cpp -o forestdb_test -I../include -L. -lforestdb -O2 -Wl,-rpath=. 

測試結果對比直方圖如下
no-jt

2、使用jemalloc和tbb測試

因為leveldb內沒有設置使用jemalloc的代碼,所以只在鏈接的時候添加。
forestdb使用cmake生成Makefile的時候設置變量COUCHBASE_SERVER_BUILD_JEMALLOC的值為1來使用jemalloc

三個測試代碼的編譯命令如下:

g++ rocksdb_test.cpp  -o rocksdb_test  -I./include  -L. -lrocksdb -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -llz4 -ljemalloc -ltbb -O2
g++ leveldb_test.cpp  -o leveldb_test  -I../include -L. -lleveldb  -ljemalloc -ltbb -O2 -Wl,-rpath=. 
g++ forestdb_test.cpp -o forestdb_test -I../include -L. -lforestdb  -ljemalloc -ltbb -O2 -Wl,-rpath=. 

測試結果對比直方圖如下
jt

測試數據和代碼

leveldbforestdb的代碼見http://www.cnblogs.com/oloroso/p/6306352.html最后部分。
rocksdb的測試代碼和leveldb的測試代碼基本一致,只是將其中的leveldb全部改為rocksdb即可(namespace和頭文件路徑)。

實際測試的時候發現一個問題,rocksdb測試程序在Open數據庫的時候耗時比較長,貌似花了很多時間在做一些處理,可能是和它的壓縮和校驗策略有關吧(RocksDB的ReadOptions默認構造時,verify_checksuntrue,而LevelDB默認為false)。

5次測試平均值如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM