为什么我在卡桑德拉看到这么多的墓碑?

时间:2016-04-08 03:17:21

标签: cassandra tombstone

当我进行表修复时,我会看到很多警告,如下所示:

WARN  [CompactionExecutor:112958] 2016-04-07 15:39:33,160 SliceQueryFilter.java:236 - Read 10002 live and 2857 tombstoned cells

但是我没有删除任何内容而且没有设置TTL,因此没有删除任何内容。为什么有这么多的墓碑?数据大小约为200G,但我插入了一些NULL单元格。

1 个答案:

答案 0 :(得分:3)

我最近有same issue。原因是我插入了NULL值。我只是不知道我做了。

如果您使用预准备语句并且未设置某些参数,或者将它们设置为NULL,或者如果您插入的JSON对象不包含表的每一列的键,那么您最终每个列的墓碑都有。

如果是预备语句,您可以通过将未使用的参数显式设置为unset来避免使用逻辑删除。请参阅CASSANDRA-7304

不幸的是,JSON插入还没有这样的语法/ API。请查看CASSANDRA-11424以查看进度。