DSE卡桑德拉3.X删除操作

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

我有一个表((A,B),C)的分区键(A,B)聚类密钥C的PRIMARY KEY

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

它是有效地使用IN子句时删除或发布使用等式运算多个DELETE语句。

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

-要么-

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';

是否有使用IN操作符如一日delete语句任何伤害。可以存在最多总计约20删除(或IN子句中20项)。

在此先感谢您的帮助!

cassandra datastax
2个回答
2
投票

除了少数例外小公司几乎总是更好地使用发行异步,而不是第二选择多个删除。 IN子句的协调员将在很大的负载放在而后者将均匀地分配负载。也有TokenAware负载平衡器的请求将直接进入正确的副本,并且可以很快完成。如果你正在做删除的数百个或更多你可能想使用信号灯或东西虽然限制在飞行中删除号码,只是为了防止超载集群。


1
投票

这取决于你的应用程序的需要。如果删除操作预想的要快,那么你可能需要运行每一个明确的(第二个选项)。

在另一方面,如果删除运行间歇或清理工作的一部分,没有人真正关心需要多长时间,那么你很可能逃脱使用IN。特技会有在从定时输出保持它(和克里斯所示,将过度的负荷的节点上)。它可能是有意义的击穿你的价值观的组列B,让那些小。虽然与IN 20列表项是不是我听说过有人尝试最,它绝对比我会永远使用个人(我会尽量保持小于10)。

从本质上讲,使用IN运营商与DELETE将是容易的性能问题一样,这将是一个SELECT,在这个答案(包括在这里供参考)描述:

Is the IN relation in Cassandra bad for queries?

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