leveldb和mapkeeper相连参数设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/clever_wr/article/details/89355584

首先在测试时为了保证参数和你的数据库保持一致。比如options.max_file_size,options.block_size等等参数,需要在mapkeeper/leveldb下的leveldbserver.cpp中修改相应的参数或者是添加相应的参数。值得注意的是,在调用filter_policy方法的时候,单纯的调用是会报错的,所以需要在前面添加两行:

#include <leveldb/filter_policy.h>
using namespace leveldb;

我设置的参数如下:

  leveldb::Options options;
        options.create_if_missing = true;
        options.error_if_exists = false;
        options.max_file_size = 64 * 1024 * 1024;
        options.block_size = 4096;
        options.write_buffer_size = 64 * 1024 * 1024; // 64MB write buffer
        options.block_cache = leveldb::NewLRUCache(10000L * 1048576L);  // 1.5GB cache
        options.compression = leveldb::kNoCompression;
        const FilterPolicy *filter_policy_ = NewBloomFilterPolicy(10);
        options.filter_policy = filter_policy_;

在输入指令进行参数设置时,有我改进了之前网上的leveldbserver,改进后的leveldbserver可以在“我的下载”中下载。改进之后在指令执行的后面加上了四种参数,包括sync(是否进行同步,我设置的0表示不同步),blindinsert(是否盲插,设置的是1),blindupdate(是否盲更新,设置的是1),path(数据库数据log路径)。如果设置成sync = 1的话在进行load100M数据时,执行一天左右的时间(我的内存是32g,centos7)。

 ./mapkeeper_leveldb 0 1 1 /home/hsk/kvstore/software/mapkeeper/leveldb/data

这是我在mapkeeper下执行的命令,如果下载了我优化后的leveldbserver,需要重新执行make操作,生成新的mapkeeper_leveldb,然后再执行上面的操作。

然后在ycsb文件夹中新建一个批量load,run工作负载文件的脚本,记住在每次run完一个工作负载文件之后清空数据库数据log路径,(因为不清空的话很有可能会报错)。

bin/ycsb load mapkeeper -s -P workloads/workloada -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/1_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloada -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/1_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadb -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/2_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadb -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/2_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadc -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/3_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadc -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/3_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadd -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/4_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadd -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/4_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloade -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/5_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloade -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/5_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadf -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/6_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadf -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/6_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*

然后执行:

chmod 777 run.sh
./run.sh

猜你喜欢

转载自blog.csdn.net/clever_wr/article/details/89355584