2016-10-04 51 views
2

我有複製因子3的6個節點羣集。我使用正常一致性級別作爲QUORUM和串行一致性級別作爲SERIAL。如果將正常一致性級別設置爲條件寫入(LWT),會發生什麼情況?

我有一個條件寫查詢(IF EXIST)。如果我使用如下所示的datastax java驅動程序將常規和串行設置爲此語句,會發生什麼情況。

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

我的查詢:

  1. 將正常的一致性QUORUM將被忽略,否則將予以考慮?
  2. 在這種情況下,我應該只設置串行一致性級別嗎?

我下文提到的鏈接,但它並不能解釋 https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlConfigSerialConsistency.html

的學習階段,它定義了哪些讀取操作將保證 立即完成,如果輕量級寫操作時使用 正常一致性水平。

請簡單說明一下。

回答

4

串行一致性級別僅用於輕量級事務的Paxos階段。如果該階段成功,則實際的變異(讀或寫)將使用指定的「正常」一致性級別進行。

因此,要回答你的問題:

將正常的一致性QUORUM將被忽略,否則將予以考慮?

如果輕量級事務成功並且執行了突變,它將被考慮在內。

在這種情況下,我應該只設置串行一致性級別嗎?

每個語句都帶有一致性級別。如果您沒有在語句級別指定任何內容,請參閱the defaults defined at cluster level apply

+0

感謝您的澄清:) – Laxmikant

+1

如果您認爲我的回答是正確的,請介意將您的問題標記爲解決問題嗎?謝謝 :) – adutra

相關問題