Adp*_*pi2 0 cql cassandra cql3
我的理解是 read_repair_chance 是在所有副本上触发 ReadRepair 的概率机会。如果发现不一致,最新更新将用于修复数据。
ReadRepairs 对我来说太贵了,因为我的大部分读取 CL 都是 ONE。所以我也选择 read_repair_chance = 0 和 dclocal_read_repair_chance = 0 。
但有时我会使用 QUORUM 而不是 ONE。当两个副本响应时达到读取 QUORUM,但两条记录可以不同。Cassandra 返回具有最新时间戳的那个。它会尝试修复另一台吗?
但有时我会使用 QUORUM 而不是 ONE。当两个副本响应时达到读取 QUORUM,但两条记录可以不同。Cassandra 返回具有最新时间戳的那个。它会尝试修复另一个吗?
假设我的RF是3并且写入和读取CL都是QUORUM。我所说的“达到想要的 CL”的意思是至少有两个副本做出响应,这就是 QUORUM。但没有任何证据证明这两个记录是相同的。Cassandra 返回具有最新时间戳的时间戳。但我的问题是它是否尝试修复其他记录?
答案是肯定的。
即使 read_repair_chance = 0 且 dclocal_read_repair_chance = 0,Cassandra 也会尝试修复另一个。
这称为“摘要不匹配”。避免读修复的唯一方法是在 LOCAL_ONE 或 ONE 处读取,这样不会发生摘要不匹配。
请参阅 CASSANDRA-13910 CASSANDRA -11409 CASSANDRA-13863
http://thelastpickle.com/blog/2016/12/08/TWCS-part1.html
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |