cassandra - 为什么 Tombstones 会影响读取性能但不会影响更新?
问题描述
从我读到的文章中,他们说墓碑会影响 Cassandra 的读取性能。我正在阅读如何在 Cassandra 中更新数据,并且看起来数据是使用时间戳写入的,而无需修改或读取当前数据。
因此,当在压缩完成之前执行读取时,需要进行过滤以获取最新值,对吗?如果是这种情况,墓碑不是同一件事,为什么它们会对性能产生负面影响但不会更新一行?
解决方案
在 Cassandra 中,update 是一个 mutation,比如 insert 和 delete,除了 LWT 的用例和一些列表操作之外,所有的 mutation 都只是追加到 memtable/commit 日志中,而不读取磁盘上的数据。所以它们非常快 - 不执行任何检查。
与此相反,读操作需要从磁盘/内存表中获取数据的所有版本,然后根据时间戳创建数据的实际版本。对于墓碑,我们需要将它们保存在内存中,因为我们可能会从磁盘中读取一些可能具有较旧时间戳的数据,我们需要对此进行检测。
推荐阅读
- c# - 通过命令行创建 7-Zip 存档时创建逻辑文件夹结构
- javascript - TypeError:无法读取未定义的属性“通道”
- vue.js - 在 nuxt.js/vue.js 上每页加载不同的 css
- javascript - Discord.js 类型/声明扩展不起作用
- python - 如何在python中自动对列表中的值进行舍入
- node.js - 从 Git 安装 nvm 而不是 curl 或 wget 有什么好处?
- flutter - Flutter,多个包,多个lib文件夹
- html - 我无法对齐段落的行。意味着从第一行开始,我也希望从那里开始第二行
- r - 几乎没有观察值的下降因子水平
- python - 如何通过将键分配给 Python 字典中的每个值元素来创建元组列表?