随Cassandra 1.2.2提供的示例配置文件的row_cache_size_in_mb
为0,它完全关闭行缓存。鉴于那行缓存has been touted as giving read performance gains,我很惊讶地预留了没有任何行缓存,甚至几十MB。卡桑德拉行缓存不值得
对于大多数场景,实际上行缓存是不是不再是值得吗?或者对于大多数场景来说它是不值得的?它只是worthwhile as a replacement for memcached
?
随Cassandra 1.2.2提供的示例配置文件的row_cache_size_in_mb
为0,它完全关闭行缓存。鉴于那行缓存has been touted as giving read performance gains,我很惊讶地预留了没有任何行缓存,甚至几十MB。卡桑德拉行缓存不值得
对于大多数场景,实际上行缓存是不是不再是值得吗?或者对于大多数场景来说它是不值得的?它只是worthwhile as a replacement for memcached
?
行缓存可以帮助从相对较小的列系列进行多次读取。尽管数据可能会存储在操作系统文件系统缓存中,但是从行缓存对象构建响应的CPU比缓存的SSTable要少。在我做的一些测试中,它从行缓存读取速度提高了30%,尽管这取决于您的数据模型。
行高速缓存的另一个用例是,您希望优先将高速缓存列族固定在高速缓存中,而不是依赖操作系统高速缓存策略。
但是,对于无法访问的CF,行缓存可能会降低性能。这可能是为什么它默认关闭。因此,只有在获得合理的命中率时才应使用行缓存。您可以从nodetool信息输出中检查此信息。
“这是快30%”不是一个很大的进步的东西,可以是非常渴望记忆。 – Raedwald 2013-03-04 11:04:23
行缓存现在更有用,因为您不必将整个分区存储在内存中。这是通过表定义中每个分区的行数设置完成的。它适用于最近选择x并使用群集顺序的查询。
http://www.datastax.com/dev/blog/row-caching-in-cassandra-2-1
行缓存可以使用大量的内存:http://stackoverflow.com/q/7979696/545127 – Raedwald 2013-03-01 15:55:32