DSE Cassandra 3.x删除操作

DSE Cassandra 3.x删除操作,cassandra,datastax,Cassandra,Datastax,我有一个主键为((a,B),C)的表 分区密钥(A,B) 聚类键C 我的问题与从该表中删除有关 删除时使用IN子句或发出多个 使用相等操作删除语句 delete from table where A=xx and B IN ('a','b','c'); -或- 在第一条delete语句中使用in运算符是否有任何危害。 总共可能有大约20次删除(或in子句中的20项) 提前感谢您的帮助 除了一些小的例外,使用第二个选项—异步发出多次删除—几乎总是更好。IN子句的协调器将承受大量负载,而后者将均匀

我有一个主键为((a,B),C)的表 分区密钥(A,B) 聚类键C

我的问题与从该表中删除有关

删除时使用IN子句或发出多个 使用相等操作删除语句

delete from table where A=xx and B IN ('a','b','c');
-或-

在第一条delete语句中使用in运算符是否有任何危害。 总共可能有大约20次删除(或in子句中的20项)


提前感谢您的帮助

除了一些小的例外,使用第二个选项—异步发出多次删除—几乎总是更好。IN子句的协调器将承受大量负载,而后者将均匀地分配负载。此外,使用令牌感知负载平衡器,请求将直接转到正确的副本,并且可以很快完成。如果要执行数百次或更多的删除,可能需要使用信号量或其他方法来限制正在进行的删除的数量,以防止集群过载。

这取决于应用程序的需要。如果预期删除操作会很快,那么您可能希望显式地运行每个操作(第二个选项)

另一方面,如果删除作为批处理或清理作业的一部分运行,并且没有人真正关心它需要多长时间,那么您可能可以在中使用
。诀窍在于防止超时(正如Chris所指出的,在节点上施加不适当的负载)。将列
B
的值分组,以保持较小的值,这可能是有意义的。虽然在
中有20个带有
的列表项并不是我听说过有人尝试的最多的,但它肯定比我个人使用的要多(我会尽量使它小于10)

本质上,将
IN
运算符与
DELETE
一起使用会像在
SELECT
上一样容易出现性能问题,如本答案所述(此处包含以供参考):

delete from table where A=xx and B='a';
delete from table where A=xx and B='b';
delete from table where A=xx and B='c';