Cassandra,删除旧的,不需要的数据

时间:2017-10-02 12:54:06

标签: cassandra

我有一个双节点的Cassandra集群,RF为2.因此两个节点都包含100%的数据。

现在,我的磁盘空间不足。我可以删除一些旧数据,因为它们之前是汇总和处理的,我不再需要它们了。

我尝试从delete运行cqlsh查询,但是我暂停了。我尝试增加超时,但似乎从cqlsh运行查询会花费更多时间。

如何为单个查询或连接禁用此超时?除了增加超时之外,还有其他方法可以从节点中删除一些数据吗?

我的Cassandra版本为3.11.0

PS。我在write_request_timeout_in_ms中增加了cassandra.yaml。这是delete查询的正确选择吗?

1 个答案:

答案 0 :(得分:0)

除非存在与其他内容相关的问题,否则删除确实不应该超时。它插入一个没有读取或任何东西的墓碑,无论已经存在什么,都应该快速/便宜。另一方面,阅读可能会受到很大影响。我猜想与读取相关的GC相关问题。您可以检查GC日志,并可能增加堆并减少CMSInitiatingOccupancyFraction(如果使用cms而不是g1)。

因此,检查GC和普通日志是否存在问题(在系统日志中查找WARN,ERROR),在gc日志中暂停时间> 1秒,应该没有。

发出删除后,您可以尝试强制压缩(nodetool compact keyspace table)以查看它是否有助于磁盘空间。在使用逻辑删除压缩数据之前,删除本身不会减少磁盘空间。

write_request_timeout_in_ms是正确的设置,但是如果你碰到它的话就错了而且你只是掩盖了它。它的正常使用时间应该不到1毫秒。

旁注:2节点集群上的RF = 2不是C *的设计运行方式。您在数据库上没有牺牲高可用性一致性的可用性。