【问题标题】:Cassandra BatchStatement behaviour - datastax java driverCassandra BatchStatement 行为 - datastax java 驱动程序
【发布时间】:2014-05-04 17:13:55
【问题描述】:

我想澄清一下 BatchStatement 的执行情况。

我已将许多针对不同表的插入/更新语句添加到批处理中。当我执行批处理时,我希望,如果任何一个查询失败,所有其他插入/更新都不应该成功。但它没有发生。我可以看到部分更新/插入。

我怎样才能做到这一点? [如果任何一个查询失败,则不应发生该批次的所有更新/插入。 ]

如何获取/打印导致批处理执行失败的确切问题查询?

LOGGED 批处理语句的用途是什么?

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/BatchStatement.Type.html#LOGGED

在 BatchStatement 中启用跟踪的目的是什么?如何打印跟踪以调试查询问题?

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Statement.html#enableTracing%28%29

我的代码看起来像,

BatchStatement batch = new BatchStatement();
batch.add(ps1.bind(xxx));
batch.add(ps2.bind(xxx));
batch.add(ps3.bind(xxx));
session.execute(batch);

谢谢,

拉梅什

【问题讨论】:

    标签: cassandra datastax-java-driver cassandra-2.0


    【解决方案1】:

    在这里阅读我关于原子批处理如何在 Cassandra 中工作的答案:

    Atomic Batches in Cassandra

    记录的批处理将启用原子批处理。这意味着他们去找同一个协调员。

    您可以在 CAssandra 1.2 之后为任何查询启用跟踪,而不仅仅是批处理。每个查询都有一个与之关联的 UUID。您可以使用该 UUID 来获取跟踪日志。

    参见示例: http://www.datastax.com/doc-source/developer/java-driver/tracing_t.html

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2016-02-27
      • 2017-01-20
      • 2017-08-12
      • 2016-12-24
      • 2021-02-09
      相关资源
      最近更新 更多