gpt4 book ai didi

database - 将 gc_grace_seconds 10 天更改为 0 天后对 Cassandra 进行重大压缩

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:04 26 4
gpt4 key购买 nike

我有一个 Cassandra 集群,它有 10 天的 gc_grace_seconds。自动压缩已启用并按照配置运行,但我怀疑自动压缩没有清除 gc_grace_seconds 持续时间(10 天)过期的墓碑。我计划对该表进行一次重大压缩,所以我的问题是。

1) 我是否应该在不更改 gc_grace_seconds 10 天的情况下运行主要压缩?

2) 我应该运行 major compaction 改变 gc_grace_seconds 0 天吗?

3) 如果我将 gc_grace_seconds 更改为 0 那么它是否适用于 future 的数据或具有天数 gc_grace_seconds 的现有数据?

提前致谢。

最佳答案

首先,除非在单节点集群上,否则不应将 gc_grace_seconds 设置为 0。如果 gc_grace_seconds 设置为某个时间段,您必须在每个这样的时间段内至少运行一次repair,否则您有数据复活的风险 - 当集群上的一个节点错过删除时会发生这种情况,而其他节点节点会删除它们的墓碑,所以稍后的修复会认为数据是新的,而没有意识到它已经被删除了。如果您曾经将 gc_grace_seconds 设置为 0,那么您之前删除的任何数据都可能会在下一次修复时恢复,前提是数据恰好位于其中一个副本上(因为该特定副本由于某些临时问题而错过了删除)。

所以是的,正确的方法是使用原来的 10 天 gc_grace_seconds 运行主要压缩(并确保至少每 10 天进行一次修复)。

但是您需要考虑为什么要运行主要压缩。小型压缩是否可以摆脱旧的(过去 10 天)墓碑取决于很多因素,例如您最近是否对这些墓碑所在的同一分区进行了其他修改。但除非墓碑给您带来了重大问题(大量磁盘空间、读取速度较慢等),可能不值得进行主要压缩。 Major 压缩不是免费的,并且(至少在大小分层压缩策略中)在它之后,所有数据都位于一个文件中,并且需要更长的时间才能再次压缩。

关于database - 将 gc_grace_seconds 10 天更改为 0 天后对 Cassandra 进行重大压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com