Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们在 1.2.5 Cassandra 集群上有一个写入繁重的工作流程。由于磁盘空间有限,我们必须偶尔删除旧数据。当可用磁盘空间量下降到一定水平时,此删除开始。我们已经了解了墓碑的作用,即当 gc_grace 超时并且正在进行小压缩时它们被删除。所以我们设置了一个“耐心延迟”,当它到期时,我们可以再次检查磁盘上的可用空间。
但是我们需要一个更可预测的删除方案,因为我们不能依赖“小压缩也许有一天会运行”。这似乎不太具体,所以我们不知道什么时候应该再次检查磁盘上的可用空间。也许你可以提供一些想法。
这可能是水平压缩的一个很好的用例 - 如果您的插入速率保持不变,则删除过期墓碑所需的时间将大致保持不变。
或者,使用大小分层压缩(默认),您可以使用nodetool compact. 这将删除所有早于 gc_grace 的墓碑。
nodetool compact
但是,这会将您的所有数据重写到一个大型 SSTable 中,因此所花费的时间与您的总数据大小成正比。您还需要使用不到一半的磁盘空间才能完成后续压缩。