首页 文章

gc_grace_seconds删除cassandra中的墓碑行

提问于
浏览
2

我正在使用真棒Cassandra DB(3.7.0),我对墓碑有疑问 .

我有一个名为 raw_data 的表 . 此表的默认TTL为1小时 . 该表每秒获取新数据 . 然后另一个处理器读取一行并删除该行 .

看起来这个 raw_data 表在运行几天后读写速度变慢了 .

这是因为删除的行是否保留为墓碑?该表已经有1小时的TTL . 我应该将 gc_grace_period 设置为少于10天(默认值)以快速删除墓碑吗? (顺便说一句,我是单节点DB)

先感谢您 .

2 回答

  • 3

    删除数据是导致逻辑删除问题的方法 . TTL是另一种方式 .

    每次删除后,Cassandra cluster 变得越来越慢,这是很正常的,你的集群最终会拒绝从这个表中读取数据 .

    gc_grace_period 设置为小于默认值 10 days 只是等式的一部分 . 另一部分是您使用的压缩策略 . 实际上,为了移除墓碑,需要压实 .

    我改变了我的单节点 cluster 的想法,我会使用 RF=3 的最小标准3节点 . 然后我'd design my project around something that doesn't明确删除数据 . 如果你绝对需要删除数据,请确保C *定期运行压缩并删除逻辑删除(或强制C *运行压缩),并确保有足够的IOPS,因为压缩是非常IO密集的 .

  • 3

    简而言之,Tombstones用于标记数据被删除,并将其复制到其他节点,因此删除的数据不必复制其他节点中的任何内容,因此您可以更新 gc grace seconds to 1 day ,这不会影响 . 将来如果您计划添加新节点和数据中心,请更改此gc宽限秒 .

相关问题