在Cassandra TTL(生存时间)之后,磁盘空间大小保持不变

时间:2014-05-27 09:39:42

标签: cassandra cassandra-0.7

我已在我的代码中实现了TTL功能,并成功删除了记录。但数据存储大小保持不变。它应该立即减少。最新的Cassandra文档说,第一次压缩后数据将被删除(它没有清晰度)。

我的简单问题

我需要在完成TTL后立即确保尺寸。那么如何确保磁盘空间是否减少?

请分享您的想法..

由于

2 个答案:

答案 0 :(得分:0)

Cassandra坚持在sstables中提供数据。 AFAIK知道,在正常写入期间,sstables将被追加(不更新,删除)。正如你自己提到的那样,压缩可以合并sstables。删除逻辑删除(删除的列)时,这可能会导致更多的可用磁盘空间。

可以阅读here,压缩是一个后台进程。您可以按配置影响频率,如here所述。我认为没有办法强制与Cassandra客户端进行小规模压缩。您可以使用nodetool compact强制进行主要压缩。但是,请记住,压缩是I / O密集型的。所以我认为这不是一个真正的解决方案。

但为什么删除的数据立即被物理删除是如此重要?

答案 1 :(得分:0)

每个节点上的nodetool repair -pr将删除你的逻辑删除记录(你应该经常这样做,无论如何基于gc_grace_seconds看http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_repair_nodes_c.html?scroll=concept_ds_ebj_d3q_gk)。

对于磁盘空间进度,这可以像在前后运行“df -h”一样简单。