Cassandra Row缓存和分区键缓存之间的区别

时间:2014-08-01 11:32:29

标签: cassandra

行缓存和分区键缓存有什么区别?我是否需要同时使用两者才能获得良好的表现。

我已经阅读了dataStax网站的基本定义

  

分区键缓存是a的分区索引的缓存   卡桑德拉表。使用密钥缓存而不是依赖OS页面   缓存可节省CPU时间和内存。但是,只启用密钥缓存   导致磁盘(或OS页面缓存)活动实际读取   请求的数据行。

     

行缓存类似于memcached这样的传统缓存。当一个   访问行,整行被拉入内存,从中合并   必要时可以使用多个SSTable,并进行缓存,以便进一步读取   可以在不击中磁盘的情况下满足该行。

任何人都可以详细说明使用范围。确实需要同时实现两者。 ?

1 个答案:

答案 0 :(得分:11)

TL; DR:您希望使用密钥缓存,并且很可能 NOT 需要行缓存。

密钥缓存有助于C *知道特定分区在SStables中的起始位置。这意味着C *不必读取任何内容来确定在文件中寻找的正确位置以开始读取行。这几乎适用于所有用例,因为它可以通过在读取路径中消除对IOP的需求来显着加快读取速度。

行缓存具有更有限的用例。行缓存将整个分区拉入内存。如果已修改该分区的任何部分,则该行的整个缓存将失效。对于大型分区,这意味着缓存可以经常缓存并使大块内存无效。因为您确实需要大多数静态分区才有用,对于大多数用例,建议您不要使用行缓存。