Cassandra中的分区密钥缓存

Cassandra中的分区密钥缓存,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,在Cassandra的YAML文件中给定一个特定的密钥缓存\u大小(单位:mb),当集群启动并且我们开始插入数据时,密钥缓存是否会继续增加,直到达到配置的大小,即是否会保持所有密钥缓存,直到第一次达到配置的大小?如果是,一旦达到这个规模,会发生什么?如果没有,那么什么算法决定哪些密钥应该被缓存,哪些密钥不应该被缓存?它是一个带a的。缓存将尝试逐出最近或经常未使用的项。我还不清楚缓存是如何填充的。我第一次启动Cassandra节点。然后我写x行数。我相信,到目前为止,密钥缓存将是空的。现在,如果我

在Cassandra的YAML文件中给定一个特定的密钥缓存\u大小(单位:mb),当集群启动并且我们开始插入数据时,密钥缓存是否会继续增加,直到达到配置的大小,即是否会保持所有密钥缓存,直到第一次达到配置的大小?如果是,一旦达到这个规模,会发生什么?如果没有,那么什么算法决定哪些密钥应该被缓存,哪些密钥不应该被缓存?

它是一个带a的。缓存将尝试逐出最近或经常未使用的项。

我还不清楚缓存是如何填充的。我第一次启动Cassandra节点。然后我写x行数。我相信,到目前为止,密钥缓存将是空的。现在,如果我执行一个查询来读取所有x行,因为键缓存将是空的,所以读取将花费很多时间(假设行缓存被禁用)。我想知道,在此之后,密钥缓存中将存储多少密钥。它会存储所有的x键吗?基本上,如果我读取一个特定的行,当我下次读取同一行时,是否保证它的键会出现在缓存中?这取决于是否使用了键缓存的查询。
SELECT*
不使用keycache,因为它会遍历各个范围,并且对于每个范围,它会遍历复制副本的CL上的数据。如果要运行一些测试,可以使用
nodetool info
查看keycache统计信息。您可以使用
nodetool invalidatekeycache
重置和
setcachekeystave
尝试不同的大小。请记住,为了更快地预热,密钥缓存会定期保存到磁盘,因此重新启动可能并不意味着缓存为空。缓存并不能真正提供保证,它们只是试图在大多数情况下对其进行改进。