检查是否存在不触摸磁盘的密钥

时间:2019-05-29 08:17:18

标签: cassandra

我们的Cassandra设置已达到IO限制。我想知道是否有一种方法可以在不接触磁盘的情况下检查某些键是否存在。我知道key cache,但对我们来说内存使用量却很多。另外,我了解到Cassandra使用bloom filters进行索引扫描。是否可以通过Cassandra的内部设置来测试密钥的存在?

1 个答案:

答案 0 :(得分:1)

我不知道您所说的索引扫描。密钥缓存(如果已填满)会告诉您磁盘上是否存在密钥。

每个sstable在内存中都有一个Bloom过滤器,以及一些可以但不能保证的元数据。 Bloom筛选器将确定是否不存在,但可能会给出误报。您可以查看相关统计信息,也可以设置误报百分比目标。另外,每个sstable都有一个min / max令牌和一个min / max集群键,如果您的键不存在,它也可能使其无法使用。

不幸的是,如果不实际执行读取操作就无法执行此操作,因此一旦找到稳定的数据,它将尝试从中读取数据。不过,您可以执行LIMIT 1至少将其最小化。如果您认为可能不同步,也可以在应用程序中放入一个知道存在或不存在的键的缓存。还有一些在添加或删除它们时将其驱逐的机制。