如何理解Cassandra中的bloom_filter_fp_chance和read_repair_chance

watbbzwu  于 12个月前  发布在  Cassandra
关注(0)|答案(1)|浏览(206)

Bloom Filters

当请求数据时,Bloom过滤器在执行磁盘I/O之前检查该行是否存在。

读取修复

读取修复对该键的所有副本执行摘要查询
我的困惑是如何将这个值设置在0到1之间,当值变化时会发生什么?
提前谢谢你,

k0pti3hp

k0pti3hp1#

bloom_filter_fp_chance和read_repair_chance控制着两个不同的东西。通常你会把它们设置为默认值,这在大多数典型的用例中都能很好地工作。
bloom_filter_fp_chance控制存储在磁盘上的SSTables的布隆过滤器数据的精度。布隆过滤器保存在内存中,当您进行读取时,Cassandra将检查布隆过滤器,以查看哪些SSTables * 可能 * 具有您正在阅读的密钥的数据。布隆过滤器通常会给予误报,当您实际读取SSTable时,事实证明,该键不存在于SST表中,阅读是浪费时间。用于布隆过滤器的精度越好,它给予的误报就越少(但它需要的内存就越多)。
从文档中:

0 Enables the unmodified, effectively the largest possible, Bloom filter
1.0 Disables the Bloom Filter
The recommended setting is 0.1. A higher value yields diminishing returns.

字符串
因此,当阅读布隆过滤器时,更高的数字给出了更高的误报(fp)机会。
read_repair_chance控制一个键的读取将被检查是否与该键的其他副本相匹配的概率。如果您的系统经常出现节点停机导致数据不同步,这将非常有用。如果您进行了大量的读取,则读修复将慢慢地使数据恢复同步,因为您执行读取操作,而无需在节点上运行完全修复。更高的设置将导致更多后台读取会修复并消耗更多资源,但会在读取时更快地同步数据。
请参阅有关这些设置here的文档。

相关问题