即使CONSURENCY LEVEL设置为ALL或QUORUM

时间:2015-06-30 11:57:34

标签: count cassandra consistency eventual-consistency

我有一个带有4个节点的Cassandra集群。 我有一个复制因子为3的密钥空间。

以下是我在执行时获得的示例cqlsh结果"在特定表上选择count(*)。即使将一致性级别设置为ALL或QUORUM,结果也始终不同。

cqlsh:试验>一致性

将一致性级别设置为ALL。

cqlsh:试验>从文章中选择计数(*);

计数

28620 (1行)

cqlsh:试验>从文章中选择计数(*);

计数

28703 (1行)

cqlsh:试验>从文章中选择计数(*);

计数

28046 (1行)

cqlsh:试验>一致性法定人数

一致性等级设置为QUORUM。

cqlsh:试验>从文章中选择计数(*);

计数

28612 (1行)

cqlsh:试验>从文章中选择计数(*);

计数

28122 (1行)

cqlsh:试验>

2 个答案:

答案 0 :(得分:2)

我认为这是一个可能已在2.1.6版中修复的错误。

查看此票证:

CASSANDRA-8940

您使用的是早于2.1.6的版本吗?

答案 1 :(得分:1)

实际上,我认为这可能是cqlsh的工作方式。 来自http://docs.datastax.com/en/cql/3.1/cql/cql_reference/select_r.html

SELECT COUNT(*) FROM big_table LIMIT 50000;
SELECT COUNT(*) FROM big_table LIMIT 200000;

如果数据库中有105,291行,这些语句的输出将是:50000和105,291。 cqlsh shell的默认行限制为10,000。 Cassandra服务器和本机协议不限制可以返回的行数,但超时会停止运行查询以防止运行导致系统不稳定的格式错误的查询。

尝试使用cqlsh:test>从文章LIMIT 200000中选择计数(*);或其他大价值