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

时间:2018-09-18 00:07:10

标签: cassandra cassandra-3.0

Cassandra是否对可以提交到Session.executeAsync的查询数量设置了限制?如果我有一百万条select语句,则可以在executeAsync循环中为所有这些语句调用for。但是我无法说出到底发生了什么。 Cassandra是否自动批处理呼叫?它会开始失败吗?

1 个答案:

答案 0 :(得分:2)

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

但是您不能简单地将主机数乘以每个主机的连接数再根据进行中的请求数而将其用作最大数-这是最大的理论限制,但是当某些节点应该处理更多的情况时,可能会出现这种情况与其他请求相比,很容易超过特定节点的限制。您可以在Java driver's documentation中找到有关连接池的更多信息。

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