1

我有进程,它经常更新单列。最后,在执行压缩之前,我的列的值存储在多个 SSTable 中。

Memtables 已排序,并同步刷新到磁盘,在这种情况下,我还假设磁盘上的 SSTables 已排序。基于此,Cassandra 需要查看单个 SSTable(带有正布隆过滤器)以找到我的列的最新值,对吗?

我有点困惑,因为我在某处读过,单列的频繁更改值会导致性能不佳,但我的理解是,只有压缩工作才有更多工作要做,阅读应该不受影响。

4

1 回答 1

2

https://issues.apache.org/jira/browse/CASSANDRA-2498

所以答案是:Cassandra 版本 < 1.0 会遍历每个 SSTable。从 1.0 开始,只会读取来自最近 SSTable 的数据,因为除了布隆过滤器之外的每个 SSTable 还包含特定列的最新更新时间。

这导致下一个问题。布隆过滤器在 RAM 中,“最后更新时间”(SSTable 元数据)呢?是否需要磁盘寻道才能访问它?在这种情况下,Cassandra 仍然需要为每个包含列值的 SSTable 进行磁盘寻道

于 2012-08-07T07:23:13.070 回答