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 * FROM records WHERE TOKEN(partition_key) > last_partition_key_of_previous_batch LIMIT 1000;
问题是有时会跳过一些记录。我还注意到那些被跳过的记录是旧的,是几个月前添加到数据库中的
所有select查询都以一致性级别ONE
执行
这可能是原因吗
根据我对一致性级别的理解,当读取的一致性级别为ONE
时,只要求一个节点执行查询
有时执行查询的节点可能不包含所有记录,这就是为什么有时会丢失一些记录的原因吗?将查询的一致性级别更改为
QUORUM
修复了此问题。是否定期执行修复?对此不确定,但最有可能的情况是,没有将某些数据分发给所有节点,并且当您使用读取时,接收请求的一个节点可能没有这些数据