我有一个Java客户端,批量推送(INSERT)记录到Cassandra集群.批处理中的元素都具有相同的行键,因此它们都将放在同一节点中.此外,我不需要事务是原子的,所以我一直在使用未记录的批处理.
每个批处理中INSERT命令的数量取决于不同的因素,但可以是5到50000之间的任何值.首先,我只需要在一个批处理中输入尽可能多的命令并提交它.这扔了com.datastax.driver.core.exceptions.InvalidQueryException: Batch too large.然后我每批使用1000 INSERT的上限,然后下降到300.我注意到我只是随机猜测而不知道这个限制的确切位置,这可能会导致麻烦.
我的问题是,这个限制是什么?我可以修改吗?我怎么知道批量中可以放置多少个元素?当我的批次"满员"时?
我想使用批处理语句从数据库中的3个表中删除一行,以确保原子性。所有三个表中的分区键都将相同。在我阅读的有关批处理语句的所有示例中,所有查询都针对单个表?就我而言,使用批处理语句是一个好主意吗?或者,我应该避免吗?
我正在使用Cassandra-3.11.2,并使用C ++驱动程序执行查询。