Cassandra何时从SSTable中删除数据?

3
在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中收到一个墓碑,但数据并没有被删除。在某个时刻,Memtable会被刷新到包括已删除数据和墓碑的SSTable中。当压缩运行时,它将保留指定优雅期限内的墓碑。那么数据会发生什么情况呢?上周我删除了一堆列-距离gc_grace_seconds不到。我不确定压缩是否已经运行。我还没有看到磁盘使用量有任何变化,所以我想知道数据从磁盘上实际删除的时间点是什么时候?
1个回答

3
在Cassandra 2.x中,当我删除一个或多个列时,它们会在Memtable中接收到一个墓碑标记,但数据并未被删除。在某个时刻,Memtable会被刷新到包括已删除的数据和墓碑标记的SSTable中。当压缩正在运行时,它将保留具有指定优雅期限的墓碑标记。
对的。
那数据发生了什么?
数据将至少保留在磁盘上gc_grace_seconds时间。在gc_grace_seconds之后的下一次小型压缩可能会将其删除,但实际的时间取决于您的数据集和工作负载类型。
我上周删除了一堆列 - 距离gc_grace_seconds不到一周。我不确定压缩是否已经运行。我还没有看到磁盘使用大小的任何变化,因此我想知道数据从磁盘上物理删除的时间点是什么时候?
如果你想要释放一些磁盘空间,你可以:
- 等待gc_grace_seconds进行正常的小型压缩。 - 运行nodetool compact,它将在当前节点上触发major compaction并立即释放磁盘空间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接