【问题标题】:Delete whole partition from Cassandra without tombstones and ttl?从没有墓碑和 ttl 的 Cassandra 中删除整个分区?
【发布时间】:2018-10-16 23:05:29
【问题描述】:

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

【问题讨论】:

    标签: cassandra datastax cassandra-3.0 datastax-startup


    【解决方案1】:

    从未在 gc_grace_period 之前。但这是一件好事,你可以控制它。如果您知道墓碑的用途,那么您可以理解在分布式删除中,如果一个节点死了一段时间,您可能会得到删除的数据,或者会产生一些一致性问题。对于单个节点,可以设置gc_grace_period为0。但是对于多节点,这个值应该大于0。对于某些表的频繁删除,如果你担心生成很多tombstones,你可以为这些表设置小的gc_grace但是考虑节点故障情况并根据需要进行处理。

    一些链接:

    Deletes Without Tombstones or TTLs
    About deletes in Cassandra

    编辑答案

    范围墓碑是一种基于分区键的有效删除方式。这会为整行创建单个 tombstone,从而减少范围读取读取的 tombstone 数量以及需要通过压缩合并或清理的 tombstone 数量。

    来自@mando222 & 我分享的链接。请阅读给定的链接。你会得到答案的。

    有不同类型的删除。整个分区删除(或单行删除)、单列删除、范围删除。如果您删除单个行或分区而不提及列,则将只为该行或整个分区创建一个墓碑。 他们没有为每个单元格设置单独的墓碑,而是有一个范围的墓碑。

    如果您执行范围删除,则位于范围中的某些行也会为该范围创建一个墓碑。

    更少的墓碑产生更快的读取速度,更快,更便宜 压实。

    【讨论】:

    • 我还要补充一点,您可以删除分区并拥有一个墓碑,而不是删除行并获得很多。 TLP 不久前有一篇很棒的文章。这比将 gc_grace 设置为 0 安全得多。
    • 如何删除一个分区并拥有一个单独的分区? @mando222 这似乎很适合我的用例
    • @rajat TLP 有一篇很棒的文章可能有助于您理解它。 thelastpickle.com/blog/2016/07/27/…
    猜你喜欢
    • 2021-04-22
    • 2019-07-09
    • 2015-06-04
    • 2018-12-11
    • 2014-11-06
    • 2017-10-03
    • 2019-02-16
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多