首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

针对只写使用的RocksDB调优参数,以减少内存

使用的RocksDB调优参数,以减少内存消耗。

RocksDB是一个高性能的嵌入式键值存储引擎,它被广泛应用于各种云计算场景中。为了减少内存消耗,我们可以通过调整一些参数来优化RocksDB的性能和内存使用。

  1. block_cache_size:这个参数用于设置块缓存的大小。块缓存是RocksDB中用于缓存数据块的一部分内存。通过适当调整这个参数,可以控制缓存的大小,从而减少内存消耗。建议根据实际情况设置合适的值,一般可以根据数据集的大小和可用内存来决定。
  2. write_buffer_size:这个参数用于设置写缓冲区的大小。写缓冲区是RocksDB中用于暂存写入数据的一部分内存。通过适当调整这个参数,可以控制写入数据时的内存消耗。建议根据实际情况设置合适的值,一般可以根据写入负载和可用内存来决定。
  3. max_write_buffer_number:这个参数用于设置最大写缓冲区的数量。通过限制写缓冲区的数量,可以控制写入数据时的内存消耗。建议根据实际情况设置合适的值,一般可以根据写入负载和可用内存来决定。
  4. compression_type:这个参数用于设置数据的压缩类型。通过选择合适的压缩类型,可以减少数据在内存中的占用空间。RocksDB支持多种压缩类型,如Snappy、LZ4、Zlib等。建议根据实际情况选择合适的压缩类型。
  5. level_compaction_dynamic_level_bytes:这个参数用于启用动态层级压缩。通过启用动态层级压缩,可以根据数据的大小自动调整不同层级的大小,从而减少内存消耗。建议在需要节省内存的情况下启用该参数。
  6. max_background_compactions:这个参数用于设置后台压缩任务的最大并发数。通过限制后台压缩任务的并发数,可以控制内存消耗。建议根据实际情况设置合适的值,一般可以根据可用内存和系统负载来决定。
  7. optimize_filters_for_hits:这个参数用于优化布隆过滤器的内存使用。通过启用该参数,可以减少布隆过滤器的内存占用,从而减少内存消耗。建议在需要节省内存的情况下启用该参数。

总结:通过调整上述参数,可以有效减少RocksDB的内存消耗。但是需要根据具体场景和需求进行调优,不同的应用场景可能需要不同的参数配置。建议在实际使用中进行测试和调整,以达到最佳的性能和内存利用率。

腾讯云相关产品:腾讯云提供了云数据库TDSQL for RocksDB,它是基于RocksDB的分布式数据库服务,具备高性能、高可靠性和强一致性的特点。您可以通过腾讯云控制台或API进行创建和管理,详情请参考:腾讯云TDSQL for RocksDB

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flink on RocksDB 参数指南

因此,这些也体现了 RocksDB 难点:容易顾此失彼,且需要在读放大(例如本来想读 1 KB 数据,结果不得不读取 10 KB 数据才能得到想要,则读放大因子是 10)、放大(例如本来想...相对于默认 LEVEL 方式,UNIVERSAL 属于 Tiered 一种,可以减少放大效应,但是副作用是会增加空间放大和读放大效应,因此适合写入量较大而读取不频繁,同时磁盘空间足够场景。...默认值为 4,可以大一些,减少 Compaction 操作频率(但是会带来 Compaction 时间延长)。...同样,1.10 新版 Flink 提供了全自动 RocksDB 内存管理(Managed)[6],大大简化容器环境下内存最大用量设置,避免因为超过了允许使用最大内存量而被系统 KILL 或发生...经过我们调研,对默认参数进行优化后,读性能有将近 800% 提升,而性能也有不同程度改善,因此 RocksDB 是非常值得进行

16.4K102

JRC Flink流作业指南

主要包含以下四个方面: TaskManager内存模型 网络栈 RocksDB与状态 其他项 本文基于Flink 1.12版本。...图2 Web UI展示内存分配情况 1.5 概览 理解TaskManager内存模型是开展大前提,进行宗旨就是:合理分配,避免浪费,保证性能。...如果不使用RocksDB状态后端,可设为0,因为其他状态后端下本地状态会存在TaskManager堆内存中。后文会详细讲解RocksDB相关项。...如上图所示,每个TaskManager既可以是Server(发送端)也可以是Client(接收端),并且它们之间TCP连接会被复用,减少资源消耗。...而前作业t. m. managed. fraction是默认0.1,并且还对RocksDB高级参数做了一些无谓修改,性能表现不佳。

1K40
  • 基于 Nebula Graph 构建百亿关系知识图谱实践

    在我们业务场景下,我们 QPS 比较低且没有很高波动,同时相比起其他图数据库,Nebula Graph 具有更小闲时内存占用,所以我们可以通过使用内存配置更低机器去运行 Nebula Graph...这里是整个架构设计 图片 四、使用 Nebula Graph 时我们如何?...前面讲过 Nebula Graph 一个很大优势就是可以使用原生 RocksDB 参数进行减少学习成本,关于具体含义以及部分策略我们分享如下: RocksDB 参数 含义 max_total_wal_size...RocksDB 缓存,对于 Direct IO 模式的话,参数很重要。...如果此参数为 true,那么 RocksDB 将严格按照 wal_bytes_per_sync 和 bytes_per_sync 设置刷盘,即每次都刷新完整一个文件,如果此参数为 false 则每次刷新部分数据

    68730

    Flink TaskManager 内存管理机制介绍与总结

    TaskManager 内存分区总览我们从 Flink 官网文档 内存分区图 5 开始介绍 ,并加以批注:图左边标注了每个区域配置参数名,右边则是一个使用 HashMapStateBackend...高级内容:对于使用 HashMapStateBackend(旧版本称之为 FileSystem StateBackend)流作业用户,如果在进程总内存固定前提下,希望尽可能提升任务堆空间,则可以减少...在我之前 Flink on RocksDB 参数指南 7 文章中,也有提到 RocksDB 内存各项参数,其中 MemTable、Block Cache 都是托管内存空间用量大户。...为了避免手动繁杂,Flink 新版内存管理默认将 state.backend.rocksdb.memory.managed 参数设为 true,这样就由 Flink 来计算 RocksDB 各部分需要用多少内存...因此在生产环境下,如果 RocksDB 频繁造成内存超用,除了大 Managed 托管内存外,也可以考虑大 Overhead 区空间,留出更多安全余量。

    7K83

    Flink TaskManager 内存管理机制介绍与总结

    TaskManager 内存分区总览 我们从 Flink 官网文档 内存分区图 [5] 开始介绍 ,并加以批注:图左边标注了每个区域配置参数名,右边则是一个使用 HashMapStateBackend...高级内容:对于使用 HashMapStateBackend(旧版本称之为 FileSystem StateBackend)流作业用户,如果在进程总内存固定前提下,希望尽可能提升任务堆空间,则可以减少...在我之前 Flink on RocksDB 参数指南 [7] 文章中,也有提到 RocksDB 内存各项参数,其中 MemTable、Block Cache 都是托管内存空间用量大户。...为了避免手动繁杂,Flink 新版内存管理默认将 state.backend.rocksdb.memory.managed 参数设为 true,这样就由 Flink 来计算 RocksDB 各部分需要用多少内存...因此在生产环境下,如果 RocksDB 频繁造成内存超用,除了大 Managed 托管内存外,也可以考虑大 Overhead 区空间,留出更多安全余量。

    99520

    【Flink】第九篇:Flink SQL 性能优化实战

    优化思路三:RocksDB性能 仔细分析这个SQL作业,是对一个联合主键字段做group by,那么state一定会非常大。...只剩下调RocksDB一条路了。根据之前对HBaseLSM原理理解,进行知识迁移,马上对RocksDB有了一定认识。...在HBase中效果最明显无乎: blockcache读缓存、memStore缓存、增加布隆过滤器、提升compact效率 沿着这个思路,再查阅了一番RocksDB资料后,决定先对如下参数进行...因此我经验是,如果需要增加 Block Size 大小来提升读写性能,请务必一并增加 Block Cache Size 大小,这样才可以取得比较好读写性能。...感悟 性能就如同把脉治病,关键在于对症下药。 前期,要分析当前场景下真正制约性能瓶颈所在,后期,在症结处用效果最明显方式处理症结。

    1.9K30

    AutoTiKV:基于机器学习数据库

    TiKV 底层使用RocksDB 作为存储引擎,然而 RocksDB 配置选项很多,很多情况下只能通过反复测试或者依靠经验来,甚至连 RocksDB 开发者都自嘲,他们没办法弄清楚每个参数调整对性能影响...如果有一个自动 tuning 方案就可以大大减少的人力成本,同时也可能在过程中,发现一些人工想不到信息。...我们从 AutoML 中得到启发,希望能用 Automated Hyper-parameter Tuning 中一些方法来对数据库参数进行自动。...另外它在 深度学习参数 中也有应用。...虽然一般来说写入时需要关闭 compaction 提升性能,但分析后发现由于 TiKV 使用了 Percolator 进行分布式事务,流程也涉及读操作(冲突检测),所以关闭 compaction

    74620

    AutoTiKV:基于机器学习数据库

    作者:吴毅 王远立 TiKV 底层使用RocksDB 作为存储引擎,然而 RocksDB 配置选项很多,很多情况下只能通过反复测试或者依靠经验来,甚至连 RocksDB 开发者都自嘲,他们没办法弄清楚每个参数调整对性能影响...如果有一个自动 tuning 方案就可以大大减少的人力成本,同时也可能在过程中,发现一些人工想不到信息。...我们从 AutoML 中得到启发,希望能用 Automated Hyper-parameter Tuning 中一些方法来对数据库参数进行自动。...另外它在 深度学习参数 中也有应用。...虽然一般来说写入时需要关闭 compaction 提升性能,但分析后发现由于 TiKV 使用了 Percolator 进行分布式事务,流程也涉及读操作(冲突检测),所以关闭 compaction

    76220

    RocksDB:高性能键值存储引擎初探

    一、RocksDB核心特性 高性能:RocksDB针对高速存储设备进行了优化,它利用了一系列技术手段,如多线程紧凑、数据压缩和延迟删除等,实现高性能读写操作。...可调性:RocksDB提供了丰富配置选项,允许开发者根据具体应用场景和工作负载特性进行,从而获得最佳性能表现。...二、RocksDB内部结构 RocksDB内部结构可以分为几个关键组件: MemTable:这是一个内存数据结构,用于缓存最近写入操作。...这大大减少了状态访问延迟,因为本地磁盘访问通常比网络访问要快得多。 高效写入:RocksDB 使用了 Write-Ahead Logging(WAL)和内存 MemTable 来优化写入操作。...这些压缩算法可以减少磁盘空间使用,并提高读取性能,因为更少数据需要从磁盘加载到内存中。

    1.1K10

    Flink状态后端和CheckPoint

    RocksDB 写入过程中,数据经过序列化后写入到WriteBuffer,WriteBuffer 满后转换为 Immutable Memtable 结构,再通过 RocksDB flush 线程从内存...RocksDBKeyedStateBackend增量快照介绍 这里介绍一下大家在大状态场景下经常需要 RocksDBKeyedStateBackend 增量快照。...RocksDB 性能发挥非常仰赖,如果全部采用默认配置,读写性能有可能会很差。 但是,RocksDB 配置也是极为复杂,可调整参数多达百个,没有放之四海而皆准优化方案。...调整RockSDB预定义选项 Flink针对不同设置为RocksDB提供了一些预定义选项,如果调整预定义选项达不到预期,再去调整block、writebuffer等参数。...增加write_buffer和level阈值大小 RocksDB中,每个State使用一个Column Family,每个Column Family使用独占write buffer, 默认64MB,建议

    1.5K30

    Flink企业级优化全面总结(3万字长文,15张图)

    1、资源配置 Flink性能第一步,就是为任务分配合适资源,在一定范围内,增加资源分配与性能提升是成正比,实现了最优资源配置后,在此基础上再考虑进行后面论述性能策略...1.3 RocksDB大状态 RocksDB 是基于 LSM Tree 实现(类似HBase),数据都是先缓存到内存中,所以RocksDB 请求效率比较高。...以下几个参数: 设置本地RocksDB多目录 在flink-conf.yaml中配置: state.backend.rocksdb.localdir: /data1/flink/rocksdb,/data2...针对特定资源Flink 通过增加并行度或增加集群中服务器数量来横向扩展 减少瓶颈算子上游并行度,从而减少瓶颈算子接收数据量(不建议,可能造成整个Job数据延迟增大) 2.2.2 垃圾回收(GC...此时,经过优化器识别后,Flink可以使用一个共享状态实例,而不是三个状态实例,可减少状态大小和对状态访问。

    3.9K33

    key value 数据库选型

    而 LevelDB 引入了 LSM 树,就是为了解决 B+ 树随机性能低问题,它把随机跳跃表形式保留在内存中(memtable),积累到足够大小就不再改写它了,并将其写入到磁盘(L0 SST...为了降低搜索代价,RocksDB使用了 Bloom filter 来判断数据是否在某个文件中(有误判,但能显著减少需要搜索文件数)。...其实 RocksDB 还有挺多可以参数,但是都需要做测试,在 SSD 和 HDD 上表现也可能不一样,这里我列几点: 在我电脑上(用 SSD),允许 MMAP 读取会稍微拖慢读取速度,允许 MMAP...另外,全局压缩比 RocksDB 使用块压缩压缩率更高,所以需要写入数据会减少,也会改善写入速度。而在合并时,它选择采用 universal 风格减少写入放大。...总结 综上,对于几十 GB ~ 几百 GB key / value 数据而言,如果使用 Go 来开发的话,BadgerDB 在很多情况下是很好选择,否则也RocksDB 了。

    2.8K30

    Flink SQL性能优化实践

    本文将深入浅出地探讨Flink SQL常见性能问题、方法、易错点及技巧,并提供代码示例。1. 常见性能问题1.1 数据源读取效率低并行度不足:默认并行度可能无法充分利用硬件资源。...易错点与技巧3.1 错误数据类型转换避免不必要类型转换:类型转换会增加计算开销。3.2 不合理JOIN操作优化JOIN条件:尽量减少全表JOIN,使用索引或预处理数据。...数据压缩与序列化9.1 选择合适序列化方式使用高效序列化框架:如Kryo,减少数据传输和存储开销。...系统配置12.1 优化JVM参数调整JVM堆内存和GC策略:避免频繁垃圾回收。...# 示例JVM启动参数-Djava.heap.size=10g -XX:+UseG1GC -XX:MaxGCPauseMillis=20012.2 监控系统资源监控CPU、内存和磁盘使用情况:及时发现问题

    24110

    一文科普 RocksDB 工作原理

    WAL:为了应对宕机前日志 Flush RocksDB 使用一个专门后台线程定期地把不可变 MemTable 从内存持久化到磁盘。...挑战 如果你应用对性能非常敏感,那么使用 RocksDB 面临最大挑战是需要针对特定工作负载来进行配置。...RocksDB 提供了非常多可配置项,但对其进行合理调整通常需要理解数据库内部原理并深入研究 RocksDB 源代码: “不幸是,对 RocksDB 进行配置并不容易。...即使作为 RocksDB 开发人员我们,也不能完全理解每个配置更改所造成影响。如果你想针对工作负载充分,我们建议你进行实验和基准测试,并时刻注意三个放大因素。”...-- RocksDB 官方指南 总结 从零开始一个生产级别的 kv 存储是非困难: 硬件和操作系统随时都有可能丢失或损坏数据。 性能优化需要大量时间投入。

    2K30

    Flink记录 - 乐享诚美

    或者使用类似于 RocksDB 这样状态后端, RocksDB 会开辟 堆外存储空间,但 IO 速度会变慢,需要权衡。...我们主要通过时间分片方法,将每个元素存入一个“重叠窗 口”,这样就可以减少窗口处理中状态写入 3、面试题三:为什么用 Flink 问题:为什么使用 Flink 替代 Spark?...在Flink后台任务管理中,我们可以看到Flink哪个算子和task出现了反压。最主要手段是资源和算子。...资源即是对作业中Operator并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行。...作业参数包括:并行度设置,State设置,checkpoint设置。 27、Flink是如何处理反压

    20020

    Flink记录

    或者使用类似于 RocksDB 这样状态后端, RocksDB 会开辟 堆外存储空间,但 IO 速度会变慢,需要权衡。...我们主要通过时间分片方法,将每个元素存入一个“重叠窗 口”,这样就可以减少窗口处理中状态写入 3、面试题三:为什么用 Flink 问题:为什么使用 Flink 替代 Spark?...在Flink后台任务管理中,我们可以看到Flink哪个算子和task出现了反压。最主要手段是资源和算子。...资源即是对作业中Operator并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行。...作业参数包括:并行度设置,State设置,checkpoint设置。 27、Flink是如何处理反压

    63120

    Flink大状态与Checkpint

    Checkpointing 应用程序可以配置定期触发检查点。 当检查点完成时间超过检查点间隔时,在进行中检查点完成之前不会触发下一个检查点。...当手动触发保存点时,它可能与正在进行检查点同时进行。 RocksDB 许多大型 Flink 流应用程序状态存储主力是 RocksDB 状态后端。...请谨慎使用此功能,因为基于堆计时器可能会增加检查点时间,并且自然无法扩展到内存之外。 RocksDB内存 RocksDB 状态后端性能很大程度上取决于它可用内存量。...您可以通过设置 state.backend.rocksdb.memory.managed: false 来尝试比较使用托管内存 RocksDB使用每列族内存 RocksDB 性能。...特别是针对基线进行测试(假设没有或适当容器内存限制)或测试与早期版本 Flink 相比回归,这可能很有用。

    1.3K32

    Flink RocksDB State Backend:when and how

    在以下情况下,RocksDB是一个不错选择: •您工作状态大于本地内存所能容纳状态(例如,长窗口,大keyed state[6]);•您正在研究增量检查点,减少检查点时间。...这意味着任何状态访问(读/)都需要经过JNI边界反序列化处理,这比直接处理堆上状态表示要昂贵。有利是,对于相同数量状态,与相应堆上表示相比,它具有较低内存占用量。...有关更多详细信息,请查看此博客文章[30],了解如何在Flink中管理RocksDB内存大小以及RocksDB内存使用情况[31]Wiki页面。...为了进一步,检查RocksDB指南[35]中RocksDB wiki[36]。...RocksDB指南: https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide [36] RocksDB wiki: https:

    3.1K31

    基于LSM-Tree 分布式组件化 KV 存储系统 | DB·洞见回顾

    自身参测试为例,数据表明,Nova- LSM可以通过调整不同参数达到较好扩展效果。...另外,上图中蓝色数据项RocksDB-tuned,它是RocksDB进行后产生数据项,红色数据项则没有经过RocksDB,而红色项却取得了比蓝色项更好性能数据。...如上图(d)组,即中间100%、均匀分布测试组,RocksDB经过后比没经过、用原始参数对照组吞吐量更低。...因为Nova-LSM本身需要有非常多参数,因此很难存在一套参数在所有的场景里都为最优。...而其他原生RocksDB则需要不断地磁盘,由于每一条key体积都不小,1000条可达到1兆,100万条就能达到1G,这时Drange机制所带来减少磁盘写入优势就会被放大了。

    1.2K20

    Flink

    18 Flink资源配置   Flink性能第一步,就是为任务分配合适资源,在一定范围内,增加资源分配与性能提升是成正比,实现了最优资源配置后,在此基础上再考虑进行后面论述性能策略...18.3 RocksDB大状态 RocksDB 是基于 LSM Tree 实现(类似HBase),数据都是先缓存到内存中,所以RocksDB 请求效率比较高。...以下几个参数: 设置本地 RocksDB 多目录   在flink-conf.yaml 中配置: state.backend.rocksdb.localdir: /data1/flink/rocksdb...,减少对State访问,从而提升吞吐并减少数据输出量。...此时,经过优化器识别后,Flink可以使用一个共享状态实例,而不是三个状态实例,可减少状态大小和对状态访问。

    47131
    领券