我有一种情况,我不知道数据是否存在于一组表中。所以,截至目前,我正在所有这些表上发布DELETE。因此,单个API调用导致Cassandra中大约30-50个DELETE。最近,大多数DELETE都是根据不存在的数据发布的。 Cassandra的表现是否会受到负面影响,因为数据上有数百万DELETE不存在?我应该使用' IF EXISTS'删除我不确定是否存在的数据?
答案 0 :(得分:4)
最好在没有IF EXISTS
的情况下发出常规删除,因为在这种情况下协调器开始使用串行一致性和paxos协议,这需要更长的时间并使其他节点批量运行等。如果不是EXISTS重量轻交易,他们应该使用1%的工作量,而不是你经常做的事情。
你仍然不希望有很多墓碑(删除的内容),所以这取决于你如何建模数据以及如何删除。如果您提供一些架构,插入和删除语句,我将非常乐意提供相关信息;)
答案 1 :(得分:1)
如果行不存在,则如果EXISTS将失败。
删除确实会影响性能,但删除不存在的行将不执行任何操作(但搜索此行),它不会为不存在的列创建逻辑删除。