更新cassandra列表集合正在创建墓碑

问题描述 投票:1回答:1

Cassandra版本3.11.3

我有一些集合和列表集合的记录。使用添加/删除数据的集合似乎没有或非常有限的墓碑创建。但是,使用列表列似乎是为每个查询创建一个逻辑删除。

我认为这是在这个bug修复的印象。 难道我做错了什么?

这样做10k次没有生成墓碑:(假设以前不存在分区)

update "Record" Set "AllSetItems" = "AllSetItems" + {'abc'} where "RecordId" = 5 and "Field" = 'xyz';
update "Record" Set "AllSetItems" = "AllSetItems" - {'abc'} where "RecordId" = 5 and "Field" = 'xyz';

因此这个查询工作正常:

Select * from "Record" where "RecordId" = 5 and "Field" = 'xyz';

这样做10k次会产生很多墓碑:(假设以前不存在分区)

update "Record" Set "AllListItems" = "AllListItems" + ['abc'] where "RecordId" = 5 and "Field" = 'xyz';
update "Record" Set "AllListItems" = "AllListItems" - ['abc'] where "RecordId" = 5 and "Field" = 'xyz';

更新后,由于墓碑太多,此查询失败:

Select * from "Record" where "RecordId" = 5 and "Field" = 'xyz';
cassandra cql tombstone
1个回答
1
投票

我相信这是按预期工作的。阅读这篇文章(虽然它有点过时),看看它是否能解释你的情况。

https://jsravn.com/2015/05/13/cassandra-tombstones-collections/#lists

© www.soinside.com 2019 - 2024. All rights reserved.