我可以强制清理旧的墓碑吗?

16

我最近为CQL表降低了gc_grace_seconds。 我正在运行 LeveledCompactionStrategy。我能强制从我的SSTables中清除旧的tombstones吗?

1个回答

16

简短概括

通过压缩位,您的墓碑将自行消失,但请确保运行修复程序,否则它们可能会死灰复燃。

http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dml_about_deletes_c.html

添加更多细节:

墓碑不会立即被删除,直到两个条件都满足:

1)gc_grace_seconds已过期

2)它们符合配置在墓碑压实子属性中的要求

我需要通过过期墓碑来释放磁盘空间,怎么快速实现?

1)运行修复工具以确保您的墓碑一致性

2)减少表的gc_grace_seconds (alter table statement)

3)配置您的压缩子属性以加速墓碑的删除:

降低tombstone_compaction_interval和降低tombstone_threshold,或将unchecked_tombstone_compaction设置为true以忽略两个条件并基于gc grace进行收集。

它是否有效?

您可以通过使用nodetool cfstats和在tools目录中找到的sstable metadata实用程序sstablemetadata <sstable filenames>来查看有关墓碑的统计信息。


7
在现代版本中,Nodetool的垃圾回收功能可能会很有用。 - phact
nodetool garbagecollect命令从Cassandra 3.10开始可用。该命令运行一系列较小的压缩操作,还检查重叠的sstables。它比nodetool compact更消耗CPU和时间,但需要较少的可用磁盘空间。 - Boholder

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