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

对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时,

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值