Cassandra控制SSTable大小

2023-11-26

有没有办法控制 SSTable 的最大大小,例如 100 MB,这样当 CF 实际上有超过 100MB 的数据时,Cassandra 就会创建下一个 SSTable?


不幸的是,答案并不那么简单,SSTable 的大小将受到压缩策略的影响,并且没有直接的方法来控制最大 sstable 大小。

当内存表作为 SSTable 刷新到磁盘时,SSTable 最初被创建。这些表的大小最初取决于您的内存表设置和堆的大小(memtable_total_space_in_mb成为一个大影响者)。通常这些 SSTable 非常小。 SSTables 被合并在一起作为一个过程的一部分,称为压实.

如果您使用大小分层压缩策略,您就有机会拥有非常大的 SSTable。当至少有min_threshold(默认 4)通过将它们合并到一个文件中、使数据过期并合并密钥来获得相同大小的 sstables。一段时间后,这有可能创建非常大的 SSTable。

使用分级压缩策略有一个sstable_size_in_mb控制 SSTables 目标大小的选项。一般来说,SSTables 将小于或等于此大小,除非您的分区键包含大量数据(“宽行”)。

我还没有对日期分层压缩策略进行太多实验,但它的工作原理与 STCS 类似,它合并相同大小的文件,但它按时间顺序将数据保持在一起,并且它具有停止压缩旧数据的配置(max_sstable_age_days)这可能很有趣。

关键是找到最适合您的数据的压缩策略,然后围绕最适合您的数据模型/环境的属性调整属性。

您可以阅读有关压缩配置设置的更多信息here并阅读本指南帮助了解 STCS 或 LCS 是否适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cassandra控制SSTable大小 的相关文章

随机推荐