如何覆盖对cassandra群集或键空间的任何查询的默认大小?

如何覆盖对cassandra群集或键空间的任何查询的默认大小?,cassandra,cql,cassandra-2.0,Cassandra,Cql,Cassandra 2.0,我有一个带有3个节点的cassandra 2.0.5集群设置。多个服务使用具有单独键空间的同一集群。由于表中blob项的大小很大,遍历所有行的查询会导致OutOfMemory错误并使集群崩溃。这对我来说是不可接受的,因为不同的服务使用同一个集群,一个集群不应该影响其他集群 现在,有一种方法可以限制每次查询在内存中加载的行数,在大多数驱动程序支持cluster 2.0协议的查询中使用fetchSize参数 默认的_fetch-size值是5000,我想将这个值重写为更小的值,比如500,以避免OO

我有一个带有3个节点的cassandra 2.0.5集群设置。多个服务使用具有单独键空间的同一集群。由于表中blob项的大小很大,遍历所有行的查询会导致OutOfMemory错误并使集群崩溃。这对我来说是不可接受的,因为不同的服务使用同一个集群,一个集群不应该影响其他集群

现在,有一种方法可以限制每次查询在内存中加载的行数,在大多数驱动程序支持cluster 2.0协议的查询中使用fetchSize参数

默认的_fetch-size值是5000,我想将这个值重写为更小的值,比如500,以避免OOM错误。我不能假设所有客户端在发出昂贵的查询时都会使用较小的fetchSize。有没有办法做到这一点?我在cassandra.yaml中找不到任何这样的配置


我是否可以按键空间级别设置此值,以便对特定键空间的所有查询都将具有较小的默认\u fetch\u大小?

我知道的是,您只能设置特定语句的fetch大小<代码>语句。setFetchSize(100)

  • 要在所有语句上设置fetchsize,可以在构建会话时在QueryOptions中进行设置。像这样的,

    Session session = Cluster.builder()
            .addContactPoint("127.0.0.1")
            .withQueryOptions(new QueryOptions().setFetchSize(100))
            .build().connect();
    
  • 如果希望对不同的键空间使用不同的fetchsize,请为每个键空间维护会话对象。像这样的,

    Session sessionForKeyspace1 = Cluster.builder()
            .addContactPoint("127.0.0.1")
            .withQueryOptions(new QueryOptions().setFetchSize(100))
            .build().connect("keyspace1");
    
    Session sessionForKeyspace2 = Cluster.builder()
            .addContactPoint("127.0.0.1")
            .withQueryOptions(new QueryOptions().setFetchSize(200))
            .build().connect("keyspace2");