为什么墓碑影响读取性能而不影响更新



从我读到的文章中,他们说tombstone会影响Cassandra中的读取性能。我正在阅读如何在Cassandra中更新数据,看起来数据是用时间戳写的,而不修改或读取当前数据。

所以,当在压缩完成之前执行读取时,需要进行过滤以获取最新的值,对吗?如果是这样的话,逻辑删除不是一回事吗?为什么它们会对性能产生负面影响,而不会对行进行更新?

在Cassandra中,更新是一种突变,比如插入和删除,除了LWT和一些列表操作的用例外,所有突变都只是附加到memtable/commit日志中,而不读取磁盘上的数据。所以它们非常快——不进行任何检查。

与此相反,读取操作需要从磁盘/内存表中获取数据的所有版本,然后根据时间戳创建数据的实际版本。对于tombstone,我们需要将其保存在内存中,因为我们可能会从磁盘中读取一些可能具有较旧时间戳的数据,并且我们需要检测到这一点。

最新更新