为什么Cassandra中的默认值表属性dclocal_read_repair_chance = 0.1?

时间:2017-04-28 06:42:29

标签: cassandra datastax datastax-enterprise datastax-java-driver datastax-startup

我正在浏览Cassandra文档并注意到这个属性。当然,我假设读取修复肯定会在向Cassandra发出读取请求时发生。为什么默认值设置为0.1而不是1?此外,将其设置为1会产生什么后果?

感谢。

1 个答案:

答案 0 :(得分:1)

只要读取显示副本之间存在不一致,Cassandra就会执行读取修复。

如果您希望cassandra即使在完全一致的读取后也能执行读取修复,您可以使用dclocal_read_repair_chance对其进行配置。

dclocal_read_repair_chance:

  

表的一致读取触发读取修复的概率。它仅限于与协调节点相同的数据中心。

Cassandra比较并协调所有副本,即使是那些在成功阅读中未访问的副本。

如果将dclocal_read_repair_chance设置为1.那么一致读取的概率将触发读取修复为1.因此,每次执行读取请求时,cassandra都会触发读取修复,这是非常耗费资源的。

建议:如果表用于时间序列数据,则可以将其设置为0(零)。对于其他表,更高效的策略是将dc_local_read_repair_chance设置为0.1

来源:http://docs.datastax.com/en/cql/3.1/cql/cql_reference/tabProp.html#tabProp__cql_tabprop_more_read_repairs