首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YugaByte数据库中压缩工作的实现

YugaByte数据库中压缩工作的实现
EN

Stack Overflow用户
提问于 2019-11-13 14:33:20
回答 1查看 453关注 0票数 1

支持何种类型的压实(例如,大小层/级别压实)?哪些参数控制着压实的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 01:52:50

YugabyteDB压缩概述:

  • YugabyteDB的契约是按大小分层的。与级别压缩相比,大小层压缩具有更低的磁盘写入(IO)放大能力。有时需要担心的是,尺寸层压缩有更高的空间放大(它需要50%的空间头部空间)。这在YugabyteDB中是不正确的,因为每个表被分解成几个碎片,并且各个碎片之间的并发压缩的数量被限制到一定的最大值(~4;但是确切的数目取决于核的数目)。因此,如果节点有N个碎片,则所需额外空间的数量仅为(4 /N+ 4)。因此,YugabyteDB中典型的空间放大往往在10-20%的范围内。默认情况下,
  • 会在新数据到达时自动触发,并刷新存储库以创建SSTable文件。默认策略确保进行压缩是值得的--例如,算法试图确保正在压缩的文件大小大致相同。例如,将一个100 1GB的文件压缩到一个1GB的文件来产生一个101 1GB的文件是没有意义的--为了更少的收益,这将是很多不必要的IO。这些旋钮指导选择:

代码语言:javascript
复制
--rocksdb_universal_compaction_min_merge_width (default 4)
--rocksdb_universal_compaction_size_ratio (default 20)

默认情况下,只有在至少有4个合格文件且其运行总量(到目前为止所考虑的文件大小之和)在下一个文件的20%以内的情况下,压缩才会运行。

  • YugabyteDB还提供了一种方法来控制压缩过程允许在整个系统中占用多少系统资源。它会根据CPU的数量自动选择一些设置,但是用户也可以根据可用的磁盘带宽显式地修改这些设置。控制此设置的标志为:

代码语言:javascript
复制
--rocksdb_max_background_compactions (e.g, 4)
--rocksdb_compact_flush_rate_limit_bytes_per_sec (e.g., 268435456)

  • 除了节流压缩控件之外,YugabyteDB还进行了各种内部优化,以尽量减少压缩对前景延迟的影响。其中之一是优先排序队列,将小压缩优先于大型压缩,以确保任何平板的SSTable文件数量尽可能低。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58839426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档