在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中收到一个墓碑,但数据不会被删除。在某些时候,Memtable被刷新为SSTable,包括已删除的数据和墓碑。当压缩正在运行时,它将保留具有指定宽限期的逻辑删除。数据会发生什么变化?我上周删除了一堆列 - 比gc_grace_seconds前少。我不确定压缩是否已经开始。我还没有看到使用的磁盘大小有任何变化,所以我想知道从磁盘上物理删除的数据在哪一点?
答案 0 :(得分:3)
在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中收到一个墓碑,但数据不会被删除。在某些时候,Memtable被刷新为SSTable,包括已删除的数据和墓碑。当压缩正在运行时,它将保留具有指定宽限期的逻辑删除。
真。
数据会怎样?
数据至少会在gc_grace_seconds中保留在磁盘上。 gc_grace_seconds 之后的下一次小压缩可以删除它,但实际时间主要取决于您的数据集和工作负载类型。
我上周删除了一堆列 - 少于gc_grace_seconds前。我不确定压缩是否已经开始。我还没有看到使用的磁盘大小有任何变化,所以我想知道从磁盘上物理删除的数据在哪一点?
如果您想释放一些磁盘空间,可以:
nodetool compact
,这将立即触发当前节点释放磁盘空间的主要压缩。