使用水平压缩的低TTL,我应该减少gc_grace_seconds以提高读取性能吗?
情境: 用于缓存外部数据库值的Cassandra表 - 读取性能需要良好(小于100毫秒) TTL =行级4小时 每6小时进行功能全表刷新(删除然后延迟加载) 如果我将gc_grace_seconds保持为默认值 10天,那么每个实时行可能有60行带有墓碑。这会影响读取性能。或者不是?
将gc_grace_seconds减少为 1天足够安全的值以允许跨节点删除复制?鉴于即使一个节点在某个问题上超出了层次,也应该在不到一天的时间内恢复。这会改善读取性能吗?
答案 0 :(得分:2)
对于每个实时行,我可能有60行带有墓碑。这会影响读取性能。或者不是?
是的,它肯定会影响您的阅读效果。在数据/墓碑比例为1:60的情况下,您要求Cassandra在每个好行中清除60次删除。如果你有很多记录,它可能会表现得非常糟糕。
将gc_grace_seconds减少为1天是否足够安全以允许跨节点删除复制?鉴于即使一个节点在某个问题上超出了层次,也应该在不到一天的时间内恢复。这会改善读取性能吗?
这可以显着提高您的阅读效果。但缺点是,如果您有一个节点从集群中退出,那么在它不知道删除之前,您只有1天的时间将其恢复。但即使您错过了它,您也应该能够通过运行nodetool repair
使节点恢复到一致状态。否则,您将面临deleted data re-appearing的可能风险。