Installation of RocksDB and db_bench

Introduction

看了很多教程,踩了很多坑,remake了无数遍…总结出来的这份应该是没有太大问题的。

Steps

Step 1

首先安装gcc、g++等工具。

sudo apt install build-essential

然后安装一些必要的库,用于RocksDB的Compression。

sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev
Step 2

下载RocksDB源码并解压。

wget https://github.com/facebook/rocksdb/archive/v6.25.1.zip
unzip rocksdb-6.25.1.zip

Tips:

  • 版本号可自己选择,下面涉及到版本号的命令需要对应更改。e.g. v6.6.4 (2020-01-31)
  • 此过程需要的时间可能较长,可以通过其他方法下载zip压缩包,拷贝至Ubuntu系统。(Recommended)
  • 如果压缩包名字略有不同,自行更改。
Step 3

编译生成动态链接库和静态链接库

cd rocksdb-6.25.1
make shared_lib && sudo make install-shared
make static_lib && sudo make install-static

Tips:

  • 如果先生成静态链接库再生成动态链接库,在生成动态链接库的时候会报错。

    make static_lib && sudo make install-static
    make shared_lib && sudo make install-shared
    

    解决办法如下:

    make clean
    make shared_lib
    make static_lib
    
  • 此过程需要的时间较长(约10min)。

最后执行sudo make install命令。

sudo make install
Step 4

设置环境变量

#echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.confsudo ldconfig -v
make shared_lib && sudo make install-shared
sudo ldconfig -v

Tips:

  • #echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.confsudo ldconfig -v: refresh the ldconfig cacheINSTALL_PATH=/usr
  • sudo ldconfig -v: refresh the ldconfig cache

Test

新建测试程序rocksdbtest.cpp

#include <cstdio>
#include <string>
#include "rocksdb/db.h"
#include "rocksdb/slice.h"
#include "rocksdb/options.h"

using namespace std;
using namespace rocksdb;

const std::string PATH = "/tmp/rocksdb_tmp";

int main() {
    DB* db;
    Options options;
    options.create_if_missing = true;
    Status status = DB::Open(options, PATH, &db);
    assert(status.ok());
    Slice key("foo");
    Slice value("bar");
    
    std::string get_value;
    status = db->Put(WriteOptions(), key, value);
    if(status.ok()) {
        status = db->Get(ReadOptions(), key, &get_value);
        if(status.ok()) {
            printf("get %s success!!\n", get_value.c_str());
        }
        else {
            printf("get failed\n"); 
        }
    }
    else {
        printf("put failed\n");
    }
    
    delete db;
}

动态编译

g++ -std=c++11 -o rocksdbtest rocksdbtest.cpp -lrocksdb  -lpthread

执行

./rocksdbtest

正确结果

get bar success!!

db_bench

make clean
make db_bench
./db_bench

Tips:

  • 运行db_bench时设置参数
    e.g.
    ./db_bench -benchmarks="fillrandom,stats" -statistics -key_size=16 -value_size=65536 -db=./test_db1 -wal_dir=./test_db1 -duration=6000 -level0_file_num_compaction_trigger=1 -enable_pipelined_write=true -compression_type=None -stats_per_interval=1 -stats_interval_seconds=10 -max_write_buffer_number=6
    

Reference

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值