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
吗?
答案 0 :(得分:4)
当从相对较小的列族中进行多次读取时,行缓存可以提供帮助。虽然数据否则将存储在OS文件系统缓存中,但是从行缓存对象构建响应的CPU比从缓存的SSTable构建响应的CPU少。在某些测试中,我从行缓存中读取的速度提高了30%,尽管这在很大程度上取决于您的数据模型。
行缓存的另一个用例是,您希望优先在缓存中固定列族而不是依赖于OS缓存策略。
但是,对于无法访问的CF,行缓存可能会降低性能。这可能是默认关闭的原因。因此,只有在获得合理的命中率时才应使用行缓存。您可以从nodetool info输出中进行检查。
答案 1 :(得分:3)
自2.1以来,行缓存现在更有用,因为您不必将整个分区存储在内存中。这是通过表定义上的每个分区的行数设置来完成的。它最适合您选择x最新的查询并使用聚类顺序。
http://www.datastax.com/dev/blog/row-caching-in-cassandra-2-1