我有一个带有4个节点的Cassandra集群 . 我有一个复制因子为3的密钥空间 .
下面是我在特定表上选择count(*)时获得的示例cqlsh结果 . 即使一致性级别设置为ALL或QUORUM,结果也始终不同 .
cqlsh:test> CONSISTENCY all
一致性级别设置为ALL .
cqlsh:test>从文章中选择count(*);
计数
28620(1行)
cqlsh:test>从文章中选择count(*);
计数
28703(1行)
cqlsh:test>从文章中选择count(*);
计数
28046(1行)
cqlsh:test> CONSISTENCY QUORUM
一致性级别设置为QUORUM .
cqlsh:test>从文章中选择count(*);
计数
28612(1行)
cqlsh:test>从文章中选择count(*);
计数
28122(1行)
cqlsh:测试>
2 回答
我认为这是一个可能已在2.1.6版本中修复的错误 .
看到这张票:
CASSANDRA-8940
您使用的是早于2.1.6的版本吗?
其实我认为这可能是cqlsh的工作方式 . 来自http://docs.datastax.com/en/cql/3.1/cql/cql_reference/select_r.html
如果数据库中有105,291行,则这些语句的输出将为:50000和105,291 . cqlsh shell的默认行限制为10,000 . Cassandra服务器和本机协议不限制可以返回的行数,但超时会停止运行查询以防止运行导致系统不稳定的格式错误的查询 .
尝试cqlsh:test>从文章LIMIT 200000中选择count(*);或其他大的 Value