Session.executeAsync的查询限制是多少?

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

Cassandra是否有限制可以向Session.executeAsync提交多少查询?如果我有一百万个select语句,我可以在executeAsync循环中为所有这些语句调用for。但我无法分辨出幕后发生了什么。 Cassandra会自动批量拨打电话吗?它开始失败了吗?

cassandra cassandra-3.0
1个回答
2
投票

这取决于所使用的协议版本和向主机打开的连接数。 V2协议支持每个连接128个飞行中请求,V3允许每个连接32k个请求(默认值为1000)。您可以在创建群集对象时使用PoolingOptions.setMaxRequestsPerConnection对其进行配置。

但是,根据飞行中请求的数量,您不能通过每个主机的连接数简单地使用多个主机,并将其用作最大数量 - 它是最大理论限制,但可能是某些节点应处理的请求多于其他节点的情况,并且很容易超越特定节点的限制。您可以在Java driver's documentation中找到有关连接池的更多信息。

最好选择一些最大数量,并使用信号量不提交超过此限制的更多请求。你可以找到here的一个例子。

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