问题描述
我有一个使用RocksDB的程序,试图将大量的键值对写入数据库:
int main() {
DB* db;
Options options;
// Optimize RocksDB. This is the easiest way to get RocksDB to perform well
options.IncreaseParallelism(12);
options.OptimizeLevelStyleCompaction();
// create the DB if it's not already present
options.create_if_missing = true;
// open DB
Status s = DB::Open(options,kDBPath,&db);
assert(s.ok());
for (int i = 0; i < 1000000; i++)
{
// Put key-value
s = db->Put(WriteOptions(),"key" + std::to_string(i),"a hard-coded string here");
assert(s.ok());
}
delete db;
return 0;
}
当我第一次运行该程序时,它生成了大约2GB的数据库,并且尝试多次运行该程序,没有进行任何更改,我得到了N * 2GB的数据库,N=number-of-run
。直到一定数量的N,数据库大小才开始减小。
但是我所期望的是,如果每次运行后写入的数据库的新批次数据都保持不变,则应将其覆盖->然后,每次运行之后,数据库的大小应为〜2GB。
问题:这是RocksDB的问题吗?如果不是的话,在有相似的成对键值对的情况下,可以通过什么适当的设置来保持数据库的大小稳定?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)