1)根据datastax密钥缓存存储rowkey的主键索引.
2)在我们的例子中,我们为密钥缓存分配了足够的内存,并且在具有不同列的多个sstables中存在相同的密钥.
3)如果没有调用从多个sstables访问所有这些相同的密钥,那么索引如何存储在密钥缓存中?它会存储所有sstables的索引还是仅存储最近访问密钥的最后一个sstable?
来自Doc
密钥缓存以每列系列为基础保存密钥在内存中的位置.
密钥缓存用作其存在的所有sstable中的密钥的索引.
每个sstable维护密钥缓存.因此,密钥缓存可以为每个SSTable [最小]节省一个磁盘搜索.每个键查找最终都会击中所有sstable的bloom过滤器.成功时,验证密钥缓存只是为了跳过sstable索引[指向密钥样本@默认为127的间隔]查找.
阅读Cassandra的路径是这样的
Memtable - >行缓存(Off heap) - > Bloom过滤器 - > Key cache - > SSTable Index [if miss] - > Disk
大胆的一切意味着它们被保存在内存中(在堆中或堆中).因此,他们不会加起来寻求磁盘
每个sstable都应该维护自己的密钥缓存.烃源从幻灯片没有101和源2从滑动23没有
使用密钥缓存未命中,使用sstable索引 - 这将给出关键字所在的第128个范围的线索.从那时起磁盘寻找关键开始[可以是1到多个].
如果我得到关于每个sstable的密钥缓存大小的cassandra descide怎么可能是[key_cache_conf/no_of_sstables]的话,我会再次更新答案?
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |