You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行超GC宽限期TIMESTAMP的Scylla CQL DELETE的墓碑及数据复现疑问

Cassandra带过期时间戳的DELETE操作问题解答

1. 是否会生成墓碑?

会生成墓碑,但这个墓碑的时间戳T(示例中的1月1日)早于GC宽限期的计算阈值(当前1月10日,GC宽限期5天,阈值为1月5日)。当集群执行压缩(compaction)操作时,这个墓碑会被判定为过期墓碑,直接被清理,不会长期留存。

2. 是否会导致数据复现?

是的,存在数据复现的风险。原因有两点:

  • 如果集群副本中还存在该数据的旧版本(时间戳晚于T但早于当前时间),墓碑被清理后,这些旧版本数据会在读取时被正常返回,相当于数据“复现”。
  • 若有节点在执行DELETE时离线,恢复后同步数据时,该过期墓碑可能已经被清理,导致该节点上的旧数据未被标记删除,最终被读取到。

3. 使用一致性级别ALL执行也会如此吗?

即使指定一致性级别ALL,结果依然相同。ALL仅能保证DELETE操作被所有副本确认执行,但生成的墓碑时间戳还是T(早于GC阈值)。后续压缩时墓碑仍会被清理,只要副本上存在时间戳晚于T的旧数据,就依然可能出现数据复现的情况。

示例验证

GC宽限期为5天,当前日期1月10日,DELETE操作使用1月1日的时间戳。此时GC阈值为1月10日减去5天,即1月5日。由于1月1日早于1月5日,生成的墓碑会在压缩时被清理。如果副本上存在1月2日至1月4日的数据版本,这些数据会在墓碑清理后重新被读取,导致数据复现。

内容的提问来源于stack exchange,提问作者Rado Buransky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:52:40