Cassandra常量墓碑压缩表

时间:2016-09-30 17:11:46

标签: cassandra cql cassandra-2.1 tombstone

我有几个Cassandra表,其上一直在运行墓碑压缩,我相信这是Cassandra流程高CPU使用率的原因。

我的设置包括:

compaction = {'tombstone_threshold': '0.01', 
'tombstone_compaction_interval': '1', 'class': 
'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}
default_time_to_live = 1728000
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0

在其中一个表格中,我每分钟都会向其写入数据。由于设置了TTL,整个行集也会每分钟到期。

  • 由于低 tombstone_threshold tombstone_compaction_interval 而导致持续压缩?

  • 有人可以详细解释 tombstone_threshold tombstone_compaction_interval 。 Cassandra文件并没有很好地解释它。

1 个答案:

答案 0 :(得分:2)

因此,假设SSTable至少与压缩间隔一样旧,则可以触发墓碑压实。事物被压缩时创建SStables。阈值是在为了墓碑压缩而不是加入sstables之前,有多少sstable是墓碑。

你正在使用水平并且看起来像是20天。为了跟上你的步伐,你将进行大量的压缩以及墓碑压缩。水平将是最好的,以确保你没有旧的墓碑占用默认压实机的磁盘空间。

如果此数据属于时间序列,您可能需要考虑使用TWCS。这将创建“桶”,每次压缩都是sstable,因此一旦该表中数据的ttl到期,压缩器就可以放弃整个sstable,效率更高。

TWCS可以作为jar添加到2.1的类路径中,我们目前正在生产中使用它。它也被添加到3.x系列的Cassandra中。