为什么我在 Cassandra 中看到这么多墓碑?
Why do I see so many tombstones in Cassandra?
当我进行 table 修复时,我看到很多警告,如下所示:
WARN [CompactionExecutor:112958] 2016-04-07 15:39:33,160 SliceQueryFilter.java:236 - Read 10002 live and 2857 tombstoned cells
但是我没有删除任何东西,也没有设置TTL,所以什么都没有删除。为什么会有这么多墓碑?数据大小约为200G,但我插入了一些带有NULL的单元格。
我最近有 same issue。原因是我插入了 NULL 值。我只是不知道我做到了。
如果您使用预准备语句并且没有设置某些参数,或者您将它们设置为 NULL,或者如果您插入的 JSON 对象不包含每个列的键table,那么您最终会为这些列中的每一列创建一个墓碑。
对于准备好的语句,您可以通过将未使用的参数显式设置为 unset. See CASSANDRA-7304.
来避免墓碑
不幸的是,JSON 还没有这样的 syntax/API 插入。查看 CASSANDRA-11424 以检查进度。
当我进行 table 修复时,我看到很多警告,如下所示:
WARN [CompactionExecutor:112958] 2016-04-07 15:39:33,160 SliceQueryFilter.java:236 - Read 10002 live and 2857 tombstoned cells
但是我没有删除任何东西,也没有设置TTL,所以什么都没有删除。为什么会有这么多墓碑?数据大小约为200G,但我插入了一些带有NULL的单元格。
我最近有 same issue。原因是我插入了 NULL 值。我只是不知道我做到了。
如果您使用预准备语句并且没有设置某些参数,或者您将它们设置为 NULL,或者如果您插入的 JSON 对象不包含每个列的键table,那么您最终会为这些列中的每一列创建一个墓碑。
对于准备好的语句,您可以通过将未使用的参数显式设置为 unset. See CASSANDRA-7304.
来避免墓碑不幸的是,JSON 还没有这样的 syntax/API 插入。查看 CASSANDRA-11424 以检查进度。