1

我在 Cassandra 中做一些简单的操作,为了简单起见,我使用的是单个节点。我有一行,我添加了 10,000 列,接下来我去删除这 10,000 列,过了一会儿我再添加 10,000 列,然后在一段时间后删除它们等等......删除将删除所有该行中的列。

这是我不明白的事情,即使我删除它们我看到数据库的大小增加了,我的GCGracePeriod设置为 0 并且我正在使用Leveled Compaction Strategy

如果我正确理解了墓碑,它们应该在第一次重大压缩后被删除,看起来它们没有被删除,即使在运行 nodetool compact 命令之后也是如此。

我在一些邮件列表中读到这些是滚动墓碑(如果您经常更新和删除同一行)并且不由主要压缩处理。所以我的问题是它们什么时候被删除?如果不是,那么数据只会增长,我个人认为这是不好的。更糟糕的是,我找不到任何关于这种特殊效果的文档。

4

1 回答 1

3

首先,正如您所发现的,这不是一个好主意。至少您应该使用行级删除,而不是单个列删除。

其次,没有 LCS 的主要压实之类的东西;nodetool compact是无操作的。

最后,Cassandra 1.2 为生成大量墓碑的工作负载改进了压缩:https ://issues.apache.org/jira/browse/CASSANDRA-3442

于 2013-02-01T00:07:22.560 回答