2016-09-30 93 views
1

我有一對卡桑德拉表上的墓碑壓實不斷運行,我相信這是卡桑德拉進程高CPU使用率背後的原因。Cassandra不斷的墓碑壓實的表

設置我有包括:

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_thresholdtombstone_compaction_interval

  • 能有人給的詳細解釋tombstone_thresholdtombstone_compaction_interval。 Cassandra文件沒有很好地解釋它。

回答

3

因此,墓碑壓實可以觸發假設SSTable至少和壓實間隔一樣大。隨着事物被壓縮,SStables被創建。閾值是多少sstable是墓碑之前壓縮只是爲了墓碑而不是加入sstables。

你正在使用水平,並有20天ttl它看起來像。你會做很多壓實以及墓碑壓實,以保持緊跟。水平將是最好的,以確保您沒有舊的墓碑吃掉默認壓縮機的磁盤空間。

如果此數據是聽起來像是的時間序列,您可能需要考慮使用TWCS來代替。這將創建一個「桶」,每個桶都被壓縮一次,所以一旦該表中的數據的ttl到期,壓縮器可以刪除整個sstable,效率更高。

TWCS可以作爲jar來使用,需要添加到2.1的classpath中,我們目前在生產中使用它。它也被加入到Cassandra的3.x系列中。

+0

感謝您的解釋和TWCS建議。你能否詳細說明爲什麼你說20天的TTL將導致一噸的壓實和墓碑壓實。 – GenerousJoker