我有几个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文件并没有很好地解释它。
答案 0 :(得分:2)
因此,假设SSTable至少与压缩间隔一样旧,则可以触发墓碑压实。事物被压缩时创建SStables。阈值是在为了墓碑压缩而不是加入sstables之前,有多少sstable是墓碑。
你正在使用水平并且看起来像是20天。为了跟上你的步伐,你将进行大量的压缩以及墓碑压缩。水平将是最好的,以确保你没有旧的墓碑占用默认压实机的磁盘空间。
如果此数据属于时间序列,您可能需要考虑使用TWCS。这将创建“桶”,每次压缩都是sstable,因此一旦该表中数据的ttl到期,压缩器就可以放弃整个sstable,效率更高。
TWCS可以作为jar添加到2.1的类路径中,我们目前正在生产中使用它。它也被添加到3.x系列的Cassandra中。