Caching cassandra和行缓存更新
Cassandra具有行缓存以提高读取性能。我有一个用例,其中一个表有20个字段,其中只有2个字段(f1和f2)对任何给定行更新/更改的频率更高,而其他字段是非常静态的 如果行缓存最初包含特定主键K1的行值(整行),则读取该行(整行)将很快。稍后,如果我更新此行的f1和f2字段(假设f1和f2新值在memtable-内存中),则 1) 读取这一行(整行)是否同样快,即是否有任何磁盘访问 2) 仅读取此行的f1和f2字段(值在memtable中)会很快吗Caching cassandra和行缓存更新,caching,cassandra,row,Caching,Cassandra,Row,Cassandra具有行缓存以提高读取性能。我有一个用例,其中一个表有20个字段,其中只有2个字段(f1和f2)对任何给定行更新/更改的频率更高,而其他字段是非常静态的 如果行缓存最初包含特定主键K1的行值(整行),则读取该行(整行)将很快。稍后,如果我更新此行的f1和f2字段(假设f1和f2新值在memtable-内存中),则 1) 读取这一行(整行)是否同样快,即是否有任何磁盘访问 2) 仅读取此行的f1和f2字段(值在memtable中)会很快吗 3) 仅读取此行的其他值(f1和f2除外,
3) 仅读取此行的其他值(f1和f2除外,它们长时间未更改/更改/更新且在行缓存中)会很快吗?如果写入一行,则该行的行缓存将失效,并且在读取之前不会再次缓存。 卡桑德拉读取路径:
K1
都在行缓存中。然后更新了f1
和f2
,这样整行将从行缓存中失效
f1
和f2
,行缓存将丢失,如果数据不在SSTables中,则仅从MemTable读取(快速),否则同时从MemTable和SSTables读取(慢速)谢谢你的快速回复。在上面的例子(1)中,效率不是很低吗。Cassandra可以将行中的2个字段标记为无效,当它必须返回一行时,可以从memtable中获取2个更改的字段,更新行缓存并返回该行(将很快)-Cassandra是否有任何计划进行此优化。快速意味着什么?是几微秒吗?慢意味着-8毫秒到40毫秒?卡桑德拉的正常读取延迟可以是亚毫秒,只要您有一个经过合理调整的堆和较小(有效)的分区大小。