Cassandra何时从SSTable中删除数据

时间:2014-09-17 08:54:42

标签: cassandra cassandra-2.0

在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中收到一个墓碑,但数据不会被删除。在某些时候,Memtable被刷新为SSTable,包括已删除的数据和墓碑。当压缩正在运行时,它将保留具有指定宽限期的逻辑删除。数据会发生什么变化?我上周删除了一堆列 - 比gc_grace_seconds前少。我不确定压缩是否已经开始。我还没有看到使用的磁盘大小有任何变化,所以我想知道从磁盘上物理删除的数据在哪一点?

1 个答案:

答案 0 :(得分:3)

  

在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中收到一个墓碑,但数据不会被删除。在某些时候,Memtable被刷新为SSTable,包括已删除的数据和墓碑。当压缩正在运行时,它将保留具有指定宽限期的逻辑删除。

真。

  

数据会怎样?

数据至少会在gc_grace_seconds中保留在磁盘上。 gc_grace_seconds 之后的下一次小压缩可以删除它,但实际时间主要取决于您的数据集和工作负载类型。

  

我上周删除了一堆列 - 少于gc_grace_seconds前。我不确定压缩是否已经开始。我还没有看到使用的磁盘大小有任何变化,所以我想知道从磁盘上物理删除的数据在哪一点?

如果您想释放一些磁盘空间,可以:

  • 等待gc_grace_seconds进行正常的轻微压缩。
  • 运行nodetool compact,这将立即触发当前节点释放磁盘空间的主要压缩。