【问题标题】:When does Cassandra remove data from an SSTableCassandra 何时从 SSTable 中删除数据
【发布时间】:2014-11-11 05:32:47
【问题描述】:
在 Cassandra 2.x 中,当我删除一列或多列时,它们会在 Memtable 中收到一个墓碑,但不会删除数据。在某些时候,Memtable 会被刷新到一个 SSTable 中,其中包括已删除的数据和墓碑。当压缩运行时,它将保留具有指定宽限期的墓碑。数据会发生什么?上周我删除了一堆列 - 不到 gc_grace_seconds 前。我不确定压缩是否已经运行。我还没有看到使用的磁盘大小有任何变化,所以我想知道数据是在什么时候从磁盘物理删除的?
【问题讨论】:
标签:
cassandra
cassandra-2.0
【解决方案1】:
在 Cassandra 2.x 中,当我删除一列或多列时,它们会在 Memtable 中收到一个墓碑,但不会删除数据。在某些时候,Memtable 会被刷新到一个 SSTable 中,其中包括已删除的数据和墓碑。当 compaction 运行时,它将在指定的宽限期内保留 tombstone。
是的。
数据会发生什么变化?
数据将至少在磁盘上保留 gc_grace_seconds。在 gc_grace_seconds 可能删除它之后的下一个小压缩,但实际时间主要取决于您的数据集和工作负载类型。
上周我删除了一堆列 - 不到 gc_grace_seconds 前。我不确定压缩是否已经运行。我还没有看到使用的磁盘大小有任何变化,所以我想知道数据是在什么时候从磁盘物理删除的?
如果你想释放一些磁盘空间,你可以:
- 等待 gc_grace_seconds 进行正常的次要压缩。
- 运行
nodetool compact,这将立即在当前节点上触发主要压缩以释放磁盘空间。