Cassandra 硬盘要求与 SizeTieredCompactionStrategy

Cassandra hard disk requirement with SizeTieredCompactionStrategy

我正在研究 Cassandra 的 SizeTieredCompactionStrategy,发现它有时可以在压缩过程中将数据集最大 table 的大小加倍。但我没有得到任何关于何时会发生这种情况的信息?有人知道吗?

这一要求源于这样一个事实,即压缩过程应该有足够的 space 来获取所有应该压缩的 SSTable,从中读取数据,并将新的 SSTable 写入同一磁盘。在 最坏的情况下 ,如果你有 table 包含所有应该压缩的 SSTable,它们的总大小是可用磁盘的 50% space,并且没有数据将被丢弃——在这种情况下,压缩过程将写入一个等于输入数据大小的单个 SSTable。如果您的输入数据占用超过 50% 的磁盘 space,压缩将没有足够的 space 来写入新版本。

在实际情况下,您需要有足够的 space 来压缩最大的 table 中最大的 SSTable,同时由 N 个压缩线程执行。如果你有很多table个大小相似的,那么这个限制就不那么强了...