行缓存和分区键缓存有什么区别?我是否需要同时使用两者才能获得良好的表现。
我已经阅读了dataStax网站的基本定义
分区键缓存是a的分区索引的缓存 卡桑德拉表。使用密钥缓存而不是依赖OS页面 缓存可节省CPU时间和内存。但是,只启用密钥缓存 导致磁盘(或OS页面缓存)活动实际读取 请求的数据行。
行缓存类似于memcached这样的传统缓存。当一个 访问行,整行被拉入内存,从中合并 必要时可以使用多个SSTable,并进行缓存,以便进一步读取 可以在不击中磁盘的情况下满足该行。
任何人都可以详细说明使用范围。确实需要同时实现两者。 ?
答案 0 :(得分:11)
TL; DR:您希望使用密钥缓存,并且很可能 NOT 需要行缓存。
密钥缓存有助于C *知道特定分区在SStables中的起始位置。这意味着C *不必读取任何内容来确定在文件中寻找的正确位置以开始读取行。这几乎适用于所有用例,因为它可以通过在读取路径中消除对IOP的需求来显着加快读取速度。
行缓存具有更有限的用例。行缓存将整个分区拉入内存。如果已修改该分区的任何部分,则该行的整个缓存将失效。对于大型分区,这意味着缓存可以经常缓存并使大块内存无效。因为您确实需要大多数静态分区才有用,对于大多数用例,建议您不要使用行缓存。