我有6个节点集群,复制因子3.我使用正常一致性级别作为QUORUM,串行一致性级别作为SERIAL。
我有条件写查询(IF EXIST)。如果我使用下面的数据传输java驱动程序将normal和serial设置为此语句,会发生什么。
//preparedStatement has a conditional query.
BoundStatement boundStatement = new BoundStatement(preparedStatement);
boundStatement.setSerialConsistencyLevel(ConsistencyLevel.SERIAL);
//is this required??
boundStatement.setConsistencyLevel(ConsistencyLevel.QUORUM);
我的疑问:
我在下面提到的链接,但它没有解释太多 https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlConfigSerialConsistency.html
学习阶段,定义了哪些读取操作将得到保证 如果正在进行轻量级写入,则立即完成使用a 正常的一致性水平。
请用简单的语言解释。
答案 0 :(得分:5)
串行一致性级别仅用于轻量级事务的Paxos阶段。如果该阶段成功,那么实际的突变(读或写)将使用" normal"指定的一致性级别。
所以回答你的问题:
是否会忽略正常的一致性QUORUM,还是会将其考虑在内?
如果轻量级事务成功并且执行了变异,则会将其考虑在内。
在这种情况下,我应该只设置串行一致性级别吗?
每个陈述都带有一致性级别。如果您未在语句级别指定任何内容,the defaults defined at cluster level apply。