【发布时间】:2018-09-22 13:34:54
【问题描述】:
给定 Cassandra 的 YAML 文件中的特定 key_cache_size_in_mb,当集群启动并且我们开始插入数据时,key_cache 是否会继续增加直到达到配置的大小,即它会保留所有的键缓存直到它第一次达到配置的大小?如果是,一旦达到这个大小会发生什么?如果不是,那么决定哪些键应该被缓存,哪些键不应该被缓存的算法是什么?
【问题讨论】:
给定 Cassandra 的 YAML 文件中的特定 key_cache_size_in_mb,当集群启动并且我们开始插入数据时,key_cache 是否会继续增加直到达到配置的大小,即它会保留所有的键缓存直到它第一次达到配置的大小?如果是,一旦达到这个大小会发生什么?如果不是,那么决定哪些键应该被缓存,哪些键不应该被缓存的算法是什么?
【问题讨论】:
它是 caffeine cache 和 size based eviction。缓存将尝试根据Window TinyLfu 逐出最近或不经常使用的条目。
【讨论】:
SELECT * 不使用 keycache,因为它遍历范围,并且对于每个范围都遍历副本的 CL 上的数据。如果你想运行一些测试,你可以使用nodetool info 来查看 keycache 统计信息。您可以使用nodetool invalidatekeycache 重置和setcachekeystosave 尝试不同的尺寸。请记住,为了更快地预热,密钥缓存会定期保存到磁盘中,因此重新启动可能并不意味着缓存为空。缓存并不能真正提供保证,它们只是在大多数情况下尝试改进它。