0

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

我的简单问题

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

请分享你的想法..

谢谢

4

2 回答 2

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”一样简单。

于 2014-05-28T01:48:46.347 回答
0

Cassandra 将其数据保存在 sstables 中。AFAIK 知道,在正常写入期间,sstables 将被附加(不更新,删除)。就像您自己提到的那样,它是合并 sstables 的压缩。这会在删除逻辑删除(删除的列)时产生更多可用磁盘空间。

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

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

于 2014-05-27T11:24:08.723 回答