如果我将正常一致性级别设置为条件写入(LWT)会发生什么?

Lax*_*ant 3 cassandra datastax-java-driver cassandra-2.0

我有6个节点集群,复制因子3.我使用常规一致性级别作为QUORUM,串行一致性级别作为SERIAL.

我有一个条件写查询(IF EXIST).如果我使用如下所示的datastax java驱动程序将normal和serial都设置为此语句,会发生什么.

//preparedStatement has a conditional query.
BoundStatement boundStatement = new BoundStatement(preparedStatement);
boundStatement.setSerialConsistencyLevel(ConsistencyLevel.SERIAL);
//is this required??
boundStatement.setConsistencyLevel(ConsistencyLevel.QUORUM);
Run Code Online (Sandbox Code Playgroud)

我的疑问:

  1. 是否会忽略正常的一致性QUORUM,还是会将其考虑在内?
  2. 在这种情况下,我应该只设置串行一致性级别吗?

我在下面提到的链接,但它没有解释太多 https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlConfigSerialConsistency.html

学习阶段定义了在发生轻量级写入时将立即完成哪些读取操作使用正常的一致性级别.

请简单解释一下.

adu*_*tra 5

串行一致性级别仅用于轻量级事务的Paxos阶段.如果该阶段成功,则将使用指定的"正常"一致性级别进行实际变异(读取或写入).

那么回答你的问题:

是否会忽略正常的一致性QUORUM,还是会将其考虑在内?

如果轻量级事务成功并且执行了突变,则会将其考虑在内.

在这种情况下,我应该只设置串行一致性级别吗?

每个陈述都具有一致性水平.如果未在语句级别指定任何内容,则应用在群集级别定义的默认值.