加载中...

墓碑(tombstone)是仅追加式存储系统中表示删除的特殊标记:由于 LSM 树的 SSTable 不可变,删除无法原地抹除数据,只能写入一条「该键已删除」的新记录,在后续读取时遮蔽旧值,直到压缩过程真正清除数据与墓碑。
在 Cassandra 等多副本系统中,墓碑还承担传播删除的职责:若直接物理删除,宕机后重新上线的副本会把旧数据当作缺失数据「修复」回来,造成删除复活(resurrection);因此墓碑必须保留一段宽限期(gc_grace_seconds),待所有副本知晓删除后才可回收,期间需完成反熵修复。
大量墓碑是常见的生产事故来源:范围查询需要逐个扫过墓碑才能找到存活数据,Cassandra 为此设有墓碑扫描的警告与失败阈值。队列式的频繁写删模式、对集合列的整体覆盖、TTL 大规模同时过期都容易堆积墓碑,属于需要在数据建模阶段规避的反模式。

登录 后参与讨论
暂无讨论,来发表第一条评论吧