支持哪种压缩方式(例如,按大小/级别压缩)?哪些参数控制压实行为?
答案 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>
--rocksdb_max_background_compactions (e.g, 4)
--rocksdb_compact_flush_rate_limit_bytes_per_sec (e.g., 268435456)
•使用yb-admin工具,YugabyteDB还允许在表上从外部触发手动压缩。对于新数据不再进入系统的表,但由于已经发生的覆盖/删除或由于TTL到期而导致用户希望回收磁盘空间的情况,这很有用。