美文网首页
Rocksdb compact调优参数

Rocksdb compact调优参数

作者: 中山浪子 | 来源:发表于2020-01-04 16:30 被阅读0次

CompactionStyle

enum CompactionStyle : char {
  // level based compaction style
  kCompactionStyleLevel = 0x0,
  // Universal compaction style
  // Not supported in ROCKSDB_LITE.
  kCompactionStyleUniversal = 0x1,
  // FIFO compaction style
  // Not supported in ROCKSDB_LITE
  kCompactionStyleFIFO = 0x2,
  // Disable background compaction. Compaction jobs are submitted
  // via CompactFiles().
  // Not supported in ROCKSDB_LITE
  kCompactionStyleNone = 0x3,
};

rocksdb 有三种compact style:

  • kCompactionStyleLevel:rocksdb默认的compact style。这种策略保证每层的key都是有序并且互不重叠,但层于层直接的key可能会重叠。当Ln层满足compact条件时,会根据CompactionPri策略(下面会介绍),挑选出Ln层的文件file1和Ln+1层中与file1有key重叠的file进行合并,生成file2,并将file2插入到Ln+1层中。该策略拥有最小的空间放大,但是带来很大的写放大和读放大。
  • kCompactionStyleUniversal:这种style将磁盘上数据完全按照写入时间线去组织,只将相邻时间段内写入磁盘上的数据compact,很像在合并互不重叠(overlapping)的时间段。该策略写放大比较低,但是读放大和空间放大比较高。
  • kCompactionStyleFIFO:通常用于几乎不修改的场景,比如消息队列、时序数据库等。
  • kCompactionStyleNone:关闭自动compact,手动触发执行。

CompactionPri

// In Level-based compaction, it Determines which file from a level to be
// picked to merge to the next level. We suggest people try
// kMinOverlappingRatio first when you tune your database.
enum CompactionPri : char {
  // Slightly prioritize larger files by size compensated by #deletes
  kByCompensatedSize = 0x0,
  // First compact files whose data's latest update time is oldest.
  // Try this if you only update some hot keys in small ranges.
  kOldestLargestSeqFirst = 0x1,
  // First compact files whose range hasn't been compacted to the next level
  // for the longest. If your updates are random across the key space,
  // write amplification is slightly better with this option.
  kOldestSmallestSeqFirst = 0x2,
  // First compact files whose ratio between overlapping size in next level
  // and its size is the smallest. It in many cases can optimize write
  // amplification.
  kMinOverlappingRatio = 0x3,
};

该参数控制每次compact,挑选哪些文件参与compact。

  • kByCompensatedSize:优先选择被删除数据最多的file去compact。rocksdb的默认设置。被删除的数据越早被compact,越可以减少空间放大,同时降低读放大。
  • kOldestLargestSeqFirst:优先选择冷数据file去compact。将冷数据compact到下一层,而将热数据保留在上层,可以有效降低读放大问题。适用有冷热数据之分的场景。
  • kOldestSmallestSeqFirst:优先选择key范围密集的file去compact。file中key范围越密集,就会有更少的重叠file在下一level,从而降低compact开销。适用于key空间均匀分布的场景。
  • kMinOverlappingRatio:优先选择和下层key范围重叠率最小的文件去compact。可以降低写放大。

参考资料

相关文章

  • Rocksdb compact调优参数

    CompactionStyle rocksdb 有三种compact style: kCompactionStyl...

  • rocksdb日志分析

    一、compact 手动compact rocksdb提供DB::CompactRange或者DB::Compac...

  • 自动调优 RocksDB

    最近看到一篇 Paper,Auto-tuning RocksDB,顿时两眼放光。RocksDB 以配置多,难优化而...

  • rocksdb性能调优

    一、关键参数 create_if_missing:创建缺失表num_levels:层次数量,默认是7。如果L0大小...

  • Flink RocksDB 状态后端参数调优实践

    截至当前,Flink 作业的状态后端仍然只有 Memory、FileSystem 和 RocksDB 三种可选,且...

  • Flink RocksDB状态后端参数调优实践

    Foreword 截至当前,Flink作业的状态后端仍然只有Memory、FileSystem和RocksDB三种...

  • how we use RocksDB at Rockset

    在这篇文章中,我们将会讲述我们在Rockset使如何使用RocksDB和对RocksDB进行调优从而达到更好的性能...

  • Mongodb简单优化

    MongoDB WiredTiger引擎调优技巧 调优Cache Size WiredTiger最重要的调优参数就...

  • RocksDB 批量导入调优

    RocksDB 批量导入数据的最快速度可以达到多少?我们面临这个挑战,因为我们想让我们的客户可以尽快把大量数据导入...

  • 调优参数

    OOM时,自动生成DUMP文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD...

网友评论

      本文标题:Rocksdb compact调优参数

      本文链接:https://www.haomeiwen.com/subject/pwzxactx.html