【问题标题】:Partition Key Caching in CassandraCassandra 中的分区键缓存
【发布时间】:2018-09-22 13:34:54
【问题描述】:

给定 Cassandra 的 YAML 文件中的特定 key_cache_size_in_mb,当集群启动并且我们开始插入数据时,key_cache 是否会继续增加直到达到配置的大小,即它会保留所有的键缓存直到它第一次达到配置的大小?如果是,一旦达到这个大小会发生什么?如果不是,那么决定哪些键应该被缓存,哪些键不应该被缓存的算法是什么?

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    它是 caffeine cachesize based eviction。缓存将尝试根据Window TinyLfu 逐出最近或不经常使用的条目。

    【讨论】:

    • 我还没有完全理解缓存是如何填充的。比如说,我是第一次启动 Cassandra 节点。然后我写了一些 x 行。到这个时候,我相信,Key Cache 将是空的。现在,如果我执行一个查询来读取所有 x 行,因为键缓存本来是空的,读取将花费很多时间(假设行缓存被禁用)。我想知道,在此之后,密钥缓存中将存储多少密钥。它会存储所有 x 键吗?基本上,如果我读取特定行,是否保证它的键将出现在缓存中,当我下次读取同一行时?
    • 这取决于是否使用keycache的查询。 SELECT * 不使用 keycache,因为它遍历范围,并且对于每个范围都遍历副本的 CL 上的数据。如果你想运行一些测试,你可以使用nodetool info 来查看 keycache 统计信息。您可以使用nodetool invalidatekeycache 重置和setcachekeystosave 尝试不同的尺寸。请记住,为了更快地预热,密钥缓存会定期保存到磁盘中,因此重新启动可能并不意味着缓存为空。缓存并不能真正提供保证,它们只是在大多数情况下尝试改进它。
    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2015-06-21
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多