Cassandra有时会跳过SELECT查询中的记录

Cassandra有时会跳过SELECT查询中的记录,cassandra,Cassandra,我的设置是: 卡桑德拉1.2.19 具有4个节点的单个数据中心群集 复制因子为3的网络拓扑策略 写入数据库的一致性级别设置为LOCAL\u QUORUM 我正在尝试迭代给定表中的所有记录,并使用一些遗留应用程序代码进行迭代,这些代码使用这种类型的连续select查询批量获取数据: SELECT * FROM records WHERE TOKEN(partition_key) > last_partition_key_of_previous_batch LIMIT 1000; 问题是

我的设置是:

  • 卡桑德拉1.2.19
  • 具有4个节点的单个数据中心群集
  • 复制因子为3的网络拓扑策略
  • 写入数据库的一致性级别设置为
    LOCAL\u QUORUM
我正在尝试迭代给定表中的所有记录,并使用一些遗留应用程序代码进行迭代,这些代码使用这种类型的连续select查询批量获取数据:

SELECT * FROM records WHERE TOKEN(partition_key) > last_partition_key_of_previous_batch LIMIT 1000;
问题是有时会跳过一些记录。我还注意到那些被跳过的记录是旧的,是几个月前添加到数据库中的

所有select查询都以一致性级别
ONE
执行

这可能是原因吗

根据我对一致性级别的理解,当读取的一致性级别为
ONE
时,只要求一个节点执行查询


有时执行查询的节点可能不包含所有记录,这就是为什么有时会丢失一些记录的原因吗?

将查询的一致性级别更改为
QUORUM
修复了此问题。

是否定期执行修复?对此不确定,但最有可能的情况是,没有将某些数据分发给所有节点,并且当您使用
读取时,接收请求的一个
节点可能没有这些数据