我有一张表格,其中我插入了TTL值为1分钟的数据,并在DSE OpsCenter中对该表中的大量墓碑发出了警告。这确实是有意义的,因为平均每分钟80条记录被插入到这个表格中。例如,整整一天,80 * 60 * 24 = 115200条记录插入,TTL‘在一天内完成。
我的问题是,我应该怎么做才能减少这张桌子上墓碑的数量?
我一直在研究tombstone_compaction_interval和gc_grace_seconds,这让我有点困惑,因为我很难理解这些属性对墓碑的确切影响(甚至在阅读了DataStax - reference/compactSubprop.html和reference/tabProp.html提供的文档之后)。
我也一直在研究LevelledCompactionStrategy (https://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra),因为它似乎也会影响墓碑的压实,尽管我不完全理解原因。
因此,我希望有人能帮助我更好地理解这一切是如何工作的,甚至告诉我,如果我的方向是正确的。
发布于 2017-07-20 20:51:17
请阅读这个http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html。读得很好。
总体上: gc_grace_seconds参数是删除数据后将墓碑保存在磁盘上的最小时间。我们需要确保所有副本都收到了删除,并存储了所有墓碑,以避免出现僵尸数据问题。默认情况下是10天。
tombstone_compaction_interval:作为JIRA (https://issues.apache.org/jira/browse/CASSANDRA-4781)的一部分,引入了这个属性。当压实比足够高,足以触发单一的可持续压实,但这些墓碑没有被驱逐,因为重叠的SSTables。
我不确定你目前的数据模型,但以下是我的建议。
如果您正在使用STCS并希望更改压缩子属性,则可能会更改unchecked_tombstone_compaction=true和min_threshold=3 (有点激进)。
https://stackoverflow.com/questions/45220418
复制相似问题