【Cassandra】删除机制 & 墓碑清理

本文详细介绍了Cassandra的删除机制,它通过插入墓碑标记而非直接删除数据。墓碑的存在是为了处理副本间的同步问题,防止僵尸数据的出现。墓碑会在存活时间(默认10天)后被清理。了解这一机制有助于理解Cassandra的数据管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对Cassandra删除机制和墓碑清理的学习笔记

删除机制

Cassandra的删除机制,实际上是一个插入操作,即不是真正的执行一个delete语句,而是执行一个update语句改变某个列的值。Cassandra采用在删除时,会执行一个update语句,在对应值上放置一个墓碑(tombstone),标识该列已经删除。等到执行合并(compact)时,就利用这些墓碑来删除SSTable中的相应的数据。

而采用这种墓碑机制的原因在于:

Cassandra会将同一份数据存放到多个副本不同的节点上,如果某个节点A收到了删除指令,删除了本地的记录,并尝试将删除逻辑传递给包含该记录副本的其他节点B,如果对应节点B并没有进行相应,即该节点无法将数据立即删除,且该节点上仍然拥有删除前的数据。如果在节点B重新恢复到集群中之前,其他节点上的该数据已经被清除,则节点B上的该数据会被认为是新的记录,进行同步。就会导致删除操作并不能生效,这种记录被称为僵尸(zombie)。

为了避免上面提到的数据的出现,采用墓碑机制,且给墓碑一定的存活时间。目的是让无响应的节点有时间恢复和正常处理逻辑删除。

墓碑清除

而墓碑何时可以被清除,即上面提到的存活时间结束后,进行清除。

Cassandra提供了gc_grace_seconds的配置项来标记,该配置项默认值为864000秒,即Cassandra会默认保存墓碑的时间为10天,10天后,该墓碑信息将在compact时,被清理掉。

参考链接:

  1. How is data delet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值