【问题标题】:Disk space size remains same even after Cassandra TTL (Time to live)即使在 Cassandra TTL(生存时间)之后,磁盘空间大小也保持不变
【发布时间】:2014-07-16 03:58:25
【问题描述】:

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

我的简单问题

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

请分享你的想法..

谢谢

【问题讨论】:

    标签: cassandra cassandra-0.7


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-09-03
        • 1970-01-01
        • 2016-03-29
        • 2015-10-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-11
        • 1970-01-01
        • 2022-01-09
        相关资源
        最近更新 更多