【发布时间】:2017-09-04 13:07:46
【问题描述】:
这是一个关于 cassandra 在 select * 查询中的行为的问题。 更多的是为了理解,我知道通常我不应该执行这样的查询。
假设我有 4 个节点,RF=2。 下表(列族): 创建表 test_storage ( 标识文字, created_on TIMESTAMP, 位置int, 数据文本, 主键(id) ); 我在表中插入了 100 个条目。
现在我通过 cqlsh 从 test_storage 中选择 *。多次查询我得到不同的结果,所以不是所有的条目。将一致性更改为 local_quorum 时,我总是会得到完整的结果。为什么会这样? 我假设,尽管从性能来看,我也得到了所有条目的一致性,因为它必须查询整个令牌范围。
第二个问题,当我在这种情况下将二级索引添加到 location 并执行 select * from test_storage where location=1 之类的查询时,我也会得到具有一致性的随机结果。并且在更改为一致性级别 local_quorum 时始终正确的结果。另外这里我不明白为什么会这样?
【问题讨论】: