我找不到这方面的文档。我知道cqlsh中有一个一致性命令,但读写一致性之间没有区别。如何为读写设置不同的一致性级别?
此外,还提到了“默认”一致性级别。默认设置在哪里?它是用于读还是写?
发布于 2018-06-23 04:08:12
如何为读取和写入设置不同的一致性级别?
如果您只想更改当前会话的一致性级别,请使用CONSISTENCY
。
如果您想通过编程更改一致性级别,请使用适用于您的客户端语言的cassandra驱动程序。
由于可以按语句设置一致性级别,因此您可以在每条语句上设置它,也可以使用PreparedStatements。如果您使用的是Java驱动程序,则可以为读取和写入配置全局一致性级别(但不仅仅是读取和写入)。
默认一致性级别设置在哪里?它是用于读还是写?
如果您希望为读取设置不同于写入的一致性级别,则必须在每个语句的基础上执行此操作。使用QueryOptions().setConsistencyLevel
设置全局一致性级别(用于Java驱动程序)。它同时用于读和写。
要设置当前会话的一致性级别,请使用cassandra shell (CQLSH)中的CONSISTENCY命令。
例如:
设置一致性以强制大多数节点响应:CONSISTENCY QUORUM
要查看当前的一致性级别,只需从shell运行CONSISTENCY;
:
ty@cqlsh> consistency; Current consistency level is ONE.
对于编程客户端应用程序,请使用适当的驱动程序设置一致性级别。
例如,要使用Java驱动程序设置每次插入的一致性级别,可以使用setConsistencyLevel
调用QueryBuilder.insertInto
。
例如:
PreparedStatement pstmt = session.prepare( "INSERT INTO product (sku, description) VALUES (?, ?)"); pstmt.setConsistencyLevel(ConsistencyLevel.QUORUM);
要使用Java驱动程序为读取和写入设置全局一致性级别,请执行以下操作:
QueryOptions qo = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ALL);
Cassandra
更多关于读/写一致性级别的资源
此处还解释了
在configuring consistency with the Java Driver中
其他关于一致性的资源:您可能还想研究您的副本放置策略和复制因素(这是其他形式的一致性)。为了更好地衡量,我包含了下面的链接:
发布于 2016-03-02 06:56:02
默认情况下,所有读/写操作的一致性级别均为1。
在每个查询(read或upsert)的基础上,通过在查询上添加CONSISTENCY XXXX
语法来设置CL,如下所示:
https://cassandra.apache.org/doc/latest/cql/dml.html#insert
和
发布于 2016-03-03 00:52:59
不再使用CQL USING
子句设置一致性级别。有关说明,请参阅CASSANDRA-4734。
相反,对于CQLSH,您应该使用CONSISTENCY
命令:有关详细信息,请参阅here。
请注意,从ONE
到LOCAL_ONE
的所有DataStax驱动程序中的默认一致性级别都已更改:有关详细信息,请参阅python driver documentation -然而,尽管在幕后使用了python驱动程序,CQLSH仍然具有默认一致性ONE
)。
https://stackoverflow.com/questions/35731452
复制相似问题