把rocksdb配置成leveldb
将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默认100M,rocksdb默认268435456,也就是256M
-cache_size,leveldb和rocskdb默认都是8M
-max_bytes_for_level_base,rocksdb的第0层上限是256M,显然leveldb不是
-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=104857600
或者直接改动rocksdb的options.h文件即可,但记得备份。
另:鬼知道rocksdb怎么这么多参数的,以上不能完全保证。
把rocksdb配置成leveldb的更多相关文章
- 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2?
p { margin-bottom: 0.1in; line-height: 120% } 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2? 要在服务器上开启 TLSv1.,通常 ...
- PLL输出怎么不能配置成我想要的时钟
如下图,我的clk_out7想配置成160M,十几输出变为了150M
- Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务
说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...
- 将VIM配置成强大的IDE(二)
将VIM配置成强大的IDE(二) 前面我们已经安装好了vundle这一款强大的插件管理工具. 下面,当然是配置我们需要的插件了. 在VIM下面通过命令 help vundle 我们可以知道,VUNDL ...
- Tomcat 配置成https协议
Tomcat 配置成https协议 在命令提示符窗口,进入Tomcat目录,执行以下命令: keytool -genkey -alias tomcat -keyalg RSA -keypass ch ...
- (转)Tomcat 配置成https协议
Tomcat 配置成https协议 TomcatXMLServlet 在命令提示符窗口,进入Tomcat目录,执行以下命令: keytool -genkey -alias tomcat -keyal ...
- 创建一个MongoDB数据库再到配置成Window服务再设置用户名密码
1.安装MongoDB数据在官网下载安装 然后在C盘找到C:\Program Files\MongoDB\Server\4.0\bin这个可执行目录 使用cmd进入到这: 2.在C盘根目录创建一个名为 ...
- node项目配置成nginx启动
node项目配置成nginx启动 1.新建ant.conf upstream antNodeJs{ server 127.0.0.1:8000; keepalive 64; } server { li ...
- JBoss 7 配置成windows启动服务
将Jboss7 server 配置成一个windows启动服务的两个文件,部署步骤如下: 1. 先检查是否配置java_home和jboss_home的环境变量,如没配置上先配置,如我的是JBO ...
随机推荐
- Output of C++ Program | Set 13
Predict the output of following C++ program. 1 #include<iostream> 2 using namespace std; 3 4 c ...
- java中的++i是线程安全的吗?
java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...
- 【保姆级教程】Ubuntu18.04+Geforce 980Ti+安装CUDA10.2+Cudnn
首先感谢师兄的博客!前半部分按照这个照做没有问题! https://www.bilibili.com/read/cv9162965/ 第一步:下载CUDA 在官网下载,查询自己的GPU型号对应的CUD ...
- python的随机森林模型调参
一.一般的模型调参原则 1.调参前提:模型调参其实是没有定论,需要根据不同的数据集和不同的模型去调.但是有一些调参的思想是有规律可循的,首先我们可以知道,模型不准确只有两种情况:一是过拟合,而是欠拟合 ...
- Redis | 第12章 Sentinel 哨兵模式《Redis设计与实现》
目录 前言 1. 启动并初始化 Sentinel 2. Sentinel 与服务器间的默认通信 2.1 获取主服务器信息 2.2 获取从服务器信息 2.3 向主服务器和从服务器发送信息 3. 接受来自 ...
- Python格式处理
目录 一.CVS表格 二.xml 三.json 四.yml 五.配置文件 六.数据库 一.CVS表格 import csv villains = [ ['Doctor', 'No'], ...
- Gitlab-CICD实践篇
一.背景 随着公司项目使用gitlab越来越多,业务发布的次数越来越频繁,对于发布效率提出了更高的要求.从2012开始,Gitlab官方开始集成了Continuous Integration (CI) ...
- MES目前应用很多,为什么APS计划排程系统应用很少?
一.APS自动化计划排程能带来哪些效益? 1.提高订单准时交货率,提高客户满意度 2.缩短生产制造周期,提高生产效率 3.多品种.小批量.以销定产,快速解决插单.急单预测交期问题 4.减少物料采购提前 ...
- Table.Group分组…Group(Power Query 之 M 语言)
数据源: 10列55行数据,其中包括含有重复项的"部门"列和可求和的"金额"列. 目标: 按"部门"列进行分组,显示各部门金额小计. 操作过 ...
- CF812A Sagheer and Crossroads 题解
Content 有一个十字路口,从最下面的部分开始,逆时针依次标号为 \(1,2,3,4\).每个部分有四个灯,分别为左转的灯.直行的灯.右转的灯以及人行通道灯(只有可能为红灯和绿灯).如果某个部分的 ...