在Cassandra中删除整个分区,不使用墓碑和ttl?

8

是否可以从Cassandra表中删除整个分区,而不编写墓碑并等待gc_grace_period和运行压缩?

1个回答

3
以前从未有过gc_grace_period。但是你可以控制它,这是件好事。如果你了解墓碑的目的,那么在分布式删除中,如果一个节点死亡了一段时间,你可能会得到已删除的数据或者会产生一些一致性问题。对于单个节点,你可以将gc_grace_period设置为0。但对于多个节点,这个值应该大于0。对于某些表中频繁删除的情况,如果你担心会生成许多墓碑,则可以为这些表设置较小的gc_grace,但要考虑节点故障的情况并根据需要进行处理。
一些链接: 没有墓碑或TTL的删除 Cassandra中的删除 编辑后的答案
范围墓碑是一种基于分区键的有效删除方式。这将为整个行创建一个单个的墓碑,减少了范围读取时读取的墓碑数量以及需要合并或清理的压缩墓碑数量。
如果您删除单个行或分区而没有提及列,则只会为该行或整个分区创建一个墓碑。它们没有每个单元格的独立墓碑,而是有一个单独的范围墓碑。
如果您进行范围删除,某些位于范围内的行也会为该范围创建一个单独的墓碑。
更少的墓碑可以提高读取速度并加快更便宜的压缩。

1
我还想补充一点,您可以删除分区并使用单个墓碑代替删除行并获得多个墓碑。 TLP在不久前发表了一篇很棒的文章介绍这一点。这比将gc_grace更改为0要安全得多。 - mando222
你如何删除一个分区并创建一个单一分区?@mando222 这似乎非常适合我的使用情况。 - rajat
@rajat TLP有一篇很棒的文章,可能会帮助你更好地理解它。http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html - mando222

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接