首页 文章

即使CONSURENCY LEVEL设置为ALL或QUORUM,Cassandra -cqlsh也会返回不一致的结果

提问于
浏览
3

我有一个带有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

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

    看到这张票:

    CASSANDRA-8940

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

  • 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中选择count(*);或其他大的 Value

相关问题