我正在使用 Cassandra Java driver .
我有一个用例,我将数据批量插入到具有不同分区键的各种Cassandra表中 .
BatchStatement batch = new BatchStatement();
batch.add (query1, query2, .....)
session.executeAsync(batch);
考虑我的批处理语句中有20个查询,15个查询执行良好,5个查询失败 .
How can I know which queries failed and which got executed.
我正在使用 executeAsync
,因为从性能角度来看 .
< Edit1: >
我们正在使用'未记录的批量查询' .
1 回答
记录的多分区批处理是原子的,但是以性能为代价 . 从官方的Cassandra文档:
所以任何查询都会成功或没有人 .
未记录的多分区批次不是原子的 . 更好地运行每个查询异步,然后单独收集结果,或者通过相同的分区键收集它们并在已记录的批处理中运行它们 .
例如:
还打开java客户端连接池,因此每个查询都没有新的连接 Build http://docs.datastax.com/en/developer/java-driver/2.1/manual/pooling/