允许过滤对Cassandra有什么影响?

允许过滤对Cassandra有什么影响?,cassandra,Cassandra,根据卡桑德拉的官方博客,允许过滤效率很低。但是,如果出于某种原因必须使用这种查询,那么对使用Cassandra获取数据的其他应用程序会有什么影响?是否只有忙于为我的查询获取行的线程会变慢,或者整个Cassandra会变慢,因此,从Cassandra获取数据的所有其他应用程序的响应都会变慢 它可能会影响整个节点。围绕它的一个问题是,一个限制为10的查询不仅会读取10条记录并返回,而且(可能)会返回大量数据。有可能实现高效的允许过滤查询,类似spark驱动程序(每个令牌范围或分区内的令牌限制查询)可

根据卡桑德拉的官方博客,允许过滤效率很低。但是,如果出于某种原因必须使用这种查询,那么对使用Cassandra获取数据的其他应用程序会有什么影响?是否只有忙于为我的查询获取行的线程会变慢,或者整个Cassandra会变慢,因此,从Cassandra获取数据的所有其他应用程序的响应都会变慢

它可能会影响整个节点。围绕它的一个问题是,一个限制为10的查询不仅会读取10条记录并返回,而且(可能)会返回大量数据。有可能实现高效的允许过滤查询,类似spark驱动程序(每个令牌范围或分区内的令牌限制查询)可以做到这一点。我强烈建议不要尝试。一开始可能会奏效,但你糟糕的运营团队会诅咒你的名字

对于更快的磁盘,obj分配(因为这是不受限制的)将导致严重的GC开销。这与使用队列或大量墓碑时所看到的问题非常相似,JVM构建和丢弃行超出了垃圾收集器可以保持的分配率,而没有更长的暂停时间(早期升级、cms中的碎片、分配尖峰扰乱了g1 younggen比率)


如果跨分区,就像正常范围查询一样,协调器将尝试估计它需要读取的范围,以及它们在有限的并发性下扇出的副本。这是一个粗略的估计,因为它只有自己的数据可以外推,但当数据被进一步过滤,而不仅仅是“范围内的分区数”时,它可能会出错并被低估。它很可能一次查询一个范围,如果不满足,则查询下一个副本集范围。对于VNode,这可能是一个很长的列表,按顺序遍历它们可能无法在超时内完成。幸运的是,这只会影响一个查询,但实际上它仍然是从1查询从集群中的每个副本集中从磁盘上读取整个数据集。如果达到100/秒,集群可能会被冲洗。

Chris感谢您的回答。那么你基本上是说其他应用程序都会受到影响?他们的数据都会变慢吗?或者有时候他们的查询会超时?这就是你所说的吗?它可能会对所有事情产生负面影响,可能会对整个集群产生负面影响。但这实际上取决于数据模型、查询内容以及查询频率。