经过gc_grace_seconds(10天)后,磁盘空间没有减少

时间:2019-06-24 11:59:54

标签: cassandra

我从表中删除了很多数据(100亿行)(做了一个小应用程序,可以在令牌范围内从LONG.MIN_VALUE到LONG.MAX_VALUE进行查询,并删除一些数据)。

从那时起20天后磁盘空间没有减少(我也在6个节点中的1个上运行nodetool repair),但是键的数量(估计数)相应减少了。

将来空间会以自然的方式减少吗,还是我需要运行cassandra的一些实用程序来回收空间?

2 个答案:

答案 0 :(得分:4)

通常,是的,空间将相应减少(一旦压实运行)。根据为该表选择的压缩策略,可能需要一些时间。例如,“大小分层压缩策略”在默认情况下要求在压缩之前4个sstable大小相同。如果您有非常大的SSTABLES,那么它们可能会在一段时间内无法压缩,或者如果没有4个相同大小的磁盘,它们可能会无限期地被压缩。手动压缩可以解决这种情况,但是会将所有内容置于一个稳定状态,也不建议这样做。如果手动压实的结果稳定度很小,那么不会伤害您。如果最终将压缩压缩为“大” SSTABLE,那么您就牺牲了“现在”来代替“以后”(再次,因为您现在只有一个大的sstable,所以它可能需要很长时间才能参与压缩) 。您可以在手动压缩后拆分sstable,以缓解已创建的情况,但是您必须使节点脱机才能执行此操作。无论如何,简短的答案是随着时间的推移,表应该相应地收缩-这取决于选择的压缩策略。

答案 1 :(得分:0)

请尝试运行“ nodetool wastecollect”,因为这将触发压缩并删除已删除的数据。您可以通过“ nodetool compacationstats”验证运行状态