【问题标题】:Why do Tombstones affect read performance but not updates?为什么 Tombstones 会影响读取性能但不会影响更新?
【发布时间】:2020-07-23 20:35:33
【问题描述】:

从我阅读的文章中,他们说墓碑会影响 Cassandra 中的读取性能。我正在阅读如何在 Cassandra 中更新数据,并且看起来数据是使用时间戳写入的,而无需修改或读取当前数据。

所以在压缩完成之前执行读取时,需要进行过滤以获取最新值,对吗?如果是这种情况,墓碑不是一回事,为什么它们会对性能产生负面影响但不会更新一行?

【问题讨论】:

    标签: cassandra cassandra-2.0 cassandra-3.0


    【解决方案1】:

    在Cassandra中,update是一个mutation,比如,insert和delete,除了LWTs的用例和一些list操作之外,所有的mutation只是追加到memtable/commit log,不读取磁盘上的数据.所以它们非常快 - 不执行任何检查。

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

    【讨论】:

    • 感谢您的回答。为什么墓碑过滤操作比合并所有旧数据以获得最新值更昂贵?
    • 我们需要保留它们,但它们不是真正的数据——如果我们回传大量数据,那么数据会被拆分为行的页面,当页面已满时,我们就读完了& 发回结果。另一件事是,墓碑不会被更长时间的压实移除
    猜你喜欢
    • 2018-11-04
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2013-05-19
    相关资源
    最近更新 更多