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

Sar*_*kar 9 cassandra

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

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

分区键高速缓存是Cassandra表的分区索引的高速缓存.使用密钥缓存而不是依赖OS页面缓存可以节省CPU时间和内存.但是,仅启用密钥缓存会导致磁盘(或OS页面缓存)活动实际读取请求的数据行.

行缓存类似于传统缓存,如memcached.访问行时,整行将被拉入内存,必要时从多个SSTable合并并缓存,以便可以满足对该行的进一步读取而无需访问磁盘.

任何人都可以详细说明使用领域.确实需要同时实现两者.?

Rus*_*ssS 11

TL; DR:你想使用密钥缓存,很可能想要行缓存.

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

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