ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

把rocksdb配置成leveldb

2022-01-05 21:03:57  阅读:197  来源: 互联网

标签:write leveldb 配置 rocksdb 默认 level0 size


将rocksdb配置成leveldb

1.配置方法

配置方式有三种:

第一种适合进行性能测试对比:是以参数形式在运行db_bench或ycsb-c的时候以参数形式将rocksdb将其配置成leveldb。

第二种属于一劳永逸模式,但改回来麻烦:是改动rocksdb的options.h文件的默认参数,以后直接运行就行。这种方式在改之前记得做好备份。

第三种适用于自己写的程序:在函数中新建Options对象,然后使用rocksdb本身提供的函数或直接对属性进行设置,例如:

  Options options;

  // 该函数会将level0_file_num_compaction_trigger(触发level0的compaction的SSTable数量)设为2等等,是rocksdb官方给出的优化,但显然和配置成leveldb没什么关系。

  options.OptimizeLevelStyleCompaction();

  //将write_buffer_size设置成4MB。

  options.write_buffer_size = 4 << 20;

 2.参数

相比于leveldb,rocksdb可配置的参数实在是太多了,所以很难保证下面的参数能够覆盖所有不同点。

-bloom_bits,每个key对应的bloom过滤器位数 ,leveldb使用默认的位数,rocksdb若使用默认的该值可以设为-1或默认不动,若不起用bloom过滤器请设置为0。

-block_size,该参数不论rocksdb还是leveldb都默认为4096.

-compression_type,leveldb只使用snappy压缩,rocksdb除snappy外还有zlib、bzip2等,并且其各层之间的压缩方法并一定一致。建议直接设为snappy或者不使用压缩。

-write_buffer_size,leveldb默认4M,rocksdb默认64M。

-key_size, -value_size,leveldb默认key_size为16,value_size为100B,这边直接设置rocksdb参数即可。

-threads,rocksdb虽然是以leveldb向多线程改进,但db_bench默认还是单线程执行,可以将threads设为1或者默认不动。

-open_files,该参数leveldb默认是1000, rocksdb默认是无限制的。

-max_write_buffer_number,rocksdb默认双memtable,这里限制为1。

-max_bytes_for_level_base,leveldb的level1默认10M,rocksdb默认268435456,也就是256M,二者往后的层的上限大小都是根据level1的大小来计算的。

-cache_size,leveldb和rocskdb默认都是8M

leveldb的触发level0层的compaction的文件数量,触发减缓写入文件数量,level0的文件最大数量分别是4,8,12;而rocksdb分别是4,20,24.

3.db_bench

rocksdb在进行本身的db_bench测试的时候可以进行如下配置可以基本化身leveldb,当然其内部还有很多不同的地方,而且越新的版本不同点越多:

./db_bench -key_size=16 -value_size=100 -num=kv的数量 -threads=1 -write_buffer_size=4194304 -open_files=1000 -benchmarks=写入方式,默认顺序写  -max_write_buffer_number=1 -compression_type=kNoCompression -bloom_bits=0 -cache_size=8388608 -level0_file_num_compaction_trigger=4 -level0_slowdown_writes_trigger=8 -level0_stop_writes_trigger=12 -max_bytes_for_level_base=10485760

或者直接改动rocksdb的options.h文件即可,但记得备份。

另:鬼知道rocksdb怎么这么多参数的,以上不能完全保证。

标签:write,leveldb,配置,rocksdb,默认,level0,size
来源: https://www.cnblogs.com/renjc/p/rocksdb-to-leveldb.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有