一、关键参数

create_if_missing:创建缺失表
num_levels:层次数量,默认是7。如果L0大小有512MB,6层能容纳512M+512M+5G+50G+500G+5T,如果配置是7,在数据量少于前面计算的5T+的数据之前,最后一层是不会被使用的。如果num_levels配置为6,那么最下面一层数据量会大于5T
max_background_flushes:memtable dump成sstable的并发线程数。默认是1,线程数小,当写入量大时,会导致无法写入。
max_background_compactions:底层sst向高层sst compact的并发线程数。并发compaction会加快compaction的速度,如果compaction过慢,达到soft_pending_compaction_bytes_limit会发生阻塞,达到hard_pending_compaction_bytes会停写。
max_write_buffer_number:指定memtable和immutable memtable总数。当写入速度过快,或者flush线程速度较慢,出现memtable数量超过了指定大小,请求会无法写入
write_buffer_size:单个memtable的大小,当memtable达到指定大小,会自动转换成immutable memtable并且新创建一个memtable
max_bytes_for_level_base:L1的总大小,L1的大小建议设置成和L0大小一致,提升L0->L1的compaction效率
min_write_buffer_number_to_merge:immutable memtable在flush之前先进行合并,比如参数设置为2,当一个memtable转换成immutable memtable后,RocksDB不会进行flush操作,等到至少有2个后才进行flush操作。这个参数调大能够减少磁盘写的次数,因为多个memtable中可能有重复的key,在flush之前先merge后就避免了旧数据刷盘;但是带来的问题是每次数据查找,当memtable中没有对应数据,RocksDB可能需要遍历所有的immutable memtable,会影响读取性能。
level0_file_num_compaction_trigger:L0达到指定个数的sstable后,触发compaction L0->L1。所以L0稳定状态下大小为write_buffer_sizemin_write_buffer_number_to_mergelevel0_file_num_compaction_trigger
statistics:统计系统性能和吞吐信息,开启statistics会增加5%到10%的额外开销
stats_dump_period_sec:统计信息导出日志时间间隔
compression_type: 压缩类型
bloom_filter_bits:使用bloom过滤器来避免不必要的磁盘访问
lru_cache_size:cache大小
max_open_files:最大打开文件句柄
skip_stats_update_on_db_open: 打开db时,是否跳过stats。建议设为false
二、wirte sall 常见情况及解决方法

(1)RocksDB在flush或compaction速度来不及处理新的写入,会启动自我保护机制,延迟写或者禁写。主要有几种情况:

写限速:如果max_write_buffer_number大于3,将要flush的memtables大于等于max_write_buffer_number-1,write会被限速。
禁写:memtable个数大于等于max_write_buffer_number,触发禁写,等到flush完成后允许写入。
写限速:L0文件数量达到level0_slowdown_writes_trigger,触发写限速。
禁写:L0文件数量达到level0_stop_writes_trigger,禁写。
写限速:等待compaction的数据量达到soft_pending_compaction_bytes,触发写限速。

禁写:等待compaction的数据量达到hard_pending_compaction_bytes,触发禁写。
(2)当出现write stall时,可以按具体的系统的状态调整如下参数:

调大max_background_flushes
调大max_write_buffer_number
调大max_background_compactions
调大write_buffer_size
调大min_write_buffer_number_to_merge
三、推荐配置示例

存储介质flash

options.options.compaction_style = kCompactionStyleLevel;
options.write_buffer_size = 67108864; // 64MB
options.max_write_buffer_number = 3;
options.target_file_size_base = 67108864; // 64MB
options.max_background_compactions = 4;
options.level0_file_num_compaction_trigger = 8;
options.level0_slowdown_writes_trigger = 17;
options.level0_stop_writes_trigger = 24;
options.num_levels = 4;
options.max_bytes_for_level_base = 536870912; // 512MB
options.max_bytes_for_level_multiplier = 8;

全内存

options.allow_mmap_reads = true;
BlockBasedTableOptions table_options;
table_options.filter_policy.reset(NewBloomFilterPolicy(10, true));
table_options.no_block_cache = true;
table_options.block_restart_interval = 4;
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
options.level0_file_num_compaction_trigger = 1;
options.max_background_flushes = 8;
options.max_background_compactions = 8;
options.max_subcompactions = 4;
options.max_open_files = -1;
ReadOptions.verify_checksums = false

rocksdb-参数配置相关推荐

  1. 【Flink】Flink on RocksDB 参数调优指南

    1. 背景 对于需要保存超大状态(远超于内存容量)的流计算场景来说,目前 RocksDB [1] 是 Flink 平台上官方实现的唯一选择.业界也有使用 Redis 等其他服务作为状态后端的方案,但终 ...

  2. Flink on RocksDB 参数调优指南

    对于需要保存超大状态(远超于内存容量)的流计算场景来说,目前 RocksDB [1] 是 Flink 平台上官方实现的唯一选择.业界也有使用 Redis 等其他服务作为状态后端的方案,但终究不够成熟, ...

  3. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  4. php7+的php-fpm参数配置,注意事项

    安装php7+的,如果php-fpm的这几个参数设置不当了,会导致php-fpm启动不了,nginx站点不能解析php文件,报404错误. 相关命令: centos7+,启动php-fpm: syst ...

  5. linux oracle dblink 访问 postgresql_从Oracle到PG-PostgreSQL数据库参数配置和查看

    完成PG的源码编译安装,以及解决网络访问正常连接的问题.可参考前面的文章: 从Oracle到PG-轻量简易,PostgreSQL-v11.5源码编译安装 从Oracle到PG-PostgreSQL数据 ...

  6. Python使用matplotlib可视化柱状图、坐标轴标签的符号(-)显示为了方框□□、设置rcParams参数配置解决

    Python使用matplotlib可视化柱状图.坐标轴标签的符号(-)显示为了方框□□.设置rcParams参数配置解决 目录

  7. R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比

    R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...

  8. nginx 没有cookie_Nginx 内容缓存及常见参数配置

    使用场景:项目的页面需要加载很多数据,也不是经常变化的,不涉及个性化定制,为每次请求去动态生成数据,性能比不上根据请求路由和参数缓存一下结果,使用 Nginx 缓存将大幅度提升请求速度. 基础 只需要 ...

  9. hive动态分区shell_Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  10. CDH集群中YARN的参数配置

    为什么80%的码农都做不了架构师?>>>    CDH集群中YARN的参数配置 前言:Hadoop 2.0之后,原先的MapReduce不在是简单的离线批处理MR任务的框架,升级为M ...

最新文章

  1. python用户名密码登录、错误三次结束_Python实现简单的用户登录信息确认,密码输错3次后,用户被锁定...
  2. 浙大计算机学院朱建科,浙江大学计算机科学与技术学院导师介绍:朱建科
  3. java带权连通图上最小权边,连通图最小生成树的算法及实现
  4. java怎样获取变量的类型
  5. 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?
  6. Com原理及應用——Com對象和接口
  7. Access数据库列名的命名规则
  8. 【CS Round #46 (Div. 1.5) B】Letters Deque
  9. 网络层传输协议(详解)
  10. html网站使用js实现记住账号密码功能
  11. 低碳节能智慧路灯杆解决方案
  12. android 音频系统/声卡驱动 codec
  13. 武汉工程大学计算机类专业排名,2019武汉工程大学专业排名
  14. 什么是ssl证书,ssl证书有哪几种类型?
  15. python文件名可以用中文吗_python对中文路径/文件名的重命名
  16. 深度学习笔记其五:卷积神经网络和PYTORCH
  17. C语言项目 电话查询系统 哈希表实现(项目要求 + 运行界面 + 代码分析 + 完整代码)
  18. CooCox工具简介——免费和开源的ARM嵌入式开发工具
  19. 1996:登山——动态规划
  20. Windows中安装配置Maven详细教程

热门文章

  1. html电子贺卡国庆,中秋贺卡设计欣赏 电子贺卡制作 中秋电子贺卡模板
  2. c语言编写用户注册程序,如何用c实现登录和注册的程序?
  3. 中国养蚕及深加工市场盈利模式与投资价值评估报告(2022-2027年)
  4. 英语四六级网站服务器繁忙,英语四六级成绩公布这些问题很常见
  5. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、可视化无竞争情况下的生存资料多时间ROC曲线
  6. 开机直接进入键盘布局_我win10开机显示选择键盘布局 进不了界面 求助啊
  7. SVN报错The working copy needs to be upgraded
  8. jike1901666
  9. 坐标测量机的定位误差和测长不确定度有何区别,如何表示?
  10. Texmacs中文支持