YugaByte DB中的压缩工作

时间:2019-11-13 14:33:20

标签: database distributed-database yugabyte-db

支持哪种压缩方式(例如,按大小/级别压缩)?哪些参数控制压实行为?

1 个答案:

答案 0 :(得分:0)

YugabyteDB压缩概述:

  • YugabyteDB的压缩是按大小分层的。与级别压缩相比,大小层压缩具有较低的磁盘写入(IO)放大的优点。有时会担心大小分层的压缩具有更高的空间放大率(它需要50%的空间)。在YugabyteDB中,这是不正确的,因为每个表都被分解为多个分片,并且跨分片的并发压缩数量被限制为某个最大值(〜4;但是确切数量取决于内核数)。因此,如果节点具有N个分片,则所需的额外空间仅为(4 / N + 4)。因此,YugabyteDB中典型的空间放大率往往在10-20%的范围内。

  • 默认情况下,新数据到达时默认触发自动压缩,并且刷新存储区以创建SSTable文件。默认策略确保进行压缩是值得的-例如,算法尝试确保要压缩的文件多少处于相似的大小。例如,用一个1GB的文件压缩一个100GB的文件以产生一个101GB的文件是没有意义的-这对于减少收益来说将是很多不必要的IO。这些旋钮可指导选择:

--rocksdb_universal_compaction_min_merge_width (default 4)
--rocksdb_universal_compaction_size_ratio (default 20)

默认情况下,仅在至少有4个合格文件且其运行总数(到目前为止已考虑的文件大小的总和)在考虑纳入同一压缩的下一个文件的20%之内时,压缩才会运行。 / p>

  • YugabyteDB还提供一种方法来控制允许压缩过程从整体上占用系统的系统资源。它会根据CPU的数量自动选择一些设置,但是用户也可以根据可用的磁盘带宽显式修改此设置。控制此设置的标志是:
--rocksdb_max_background_compactions (e.g, 4)
--rocksdb_compact_flush_rate_limit_bytes_per_sec (e.g., 268435456)
  • 除了限制压缩的控件外,YugabyteDB还进行了各种内部优化,以最大程度地减少压缩对前台等待时间的影响。其中一种就是优先队列,该队列将小压缩优先于大压缩,以确保任何平板电脑的SSTable文件数保持尽可能少。

•使用yb-admin工具,YugabyteDB还允许在表上从外部触发手动压缩。对于新数据不再进入系统的表,但由于已经发生的覆盖/删除或由于TTL到期而导致用户希望回收磁盘空间的情况,这很有用。