Cassandra缓存模式具有稀疏和宽行

时间:2012-03-01 08:51:12

标签: cassandra

我的用例需要大量读取负载 - 有两种可能的模型设计策略:

  1. 带行缓存的微小行:在这种情况下,行足够小以适应RAM并且所有列都被缓存。读访问应该很快。

  2. 带有密钥缓存的宽行。具有大列数量的宽行对于行缓存来说是大的。访问列子集需要HDD搜索。

  3. 据我所知,使用宽行是一种很好的设计模式。但是我们需要禁用行缓存 - 所以....这种宽行的好处是什么(至少对于读取访问)?

    哪种方法更好1或2?

1 个答案:

答案 0 :(得分:0)

行缓存不一定会提高读取性能。

当行缓存被禁用并且启用了密钥缓存时,Cassandra将直接从HDD中读取数据直接跳转到右偏移(基于密钥缓存)。在这种情况下,操作系统将缓存HDD访问。

Cassandra将文件作为虚拟文件打开 - 在这种情况下,文件被处理为“从内存中读取”实际上第一次读取到HDD并且第二次读取是从RAM提供的。只有已经访问过的文件部分被加载到RAM中(加上预读128kb)

我的负载测试(3个带有8个核心xenon的服务器,24GB内存,Cassandra中的60GB数据)显示,行缓存和文件系统缓存具有相似的性能 - 操作系统缓存会导致CPU负载降低