performance - Cassandra 和 Tombstones : Creating a Row , 删除行,重新创建行 = 性能?

标签 performance cassandra tombstone

有人可以解释一下,以下过程对墓碑有什么影响:

1.)Creating a "Row" with Key "1" ("Fields": user, password, date)

2.)Deleting the "Row" with Key "1"

3.)Creating a "Row" with Key "1" ("Fields": user, password,logincount)


该序列在一个线程中按顺序执行(因此这种情况以相对较高的“速度”发生 = 操作之间没有长时间的停顿)。
我的问题:
1.) 这对墓碑的创建有什么影响。后 2.)创建/存在墓碑。但是,如果在相同的键下再次创建新的(略有更改的行)(在过程步骤 3.) 中),现有的墓碑会发生什么情况。 cassandra 可以非常有效地“复活”墓碑吗?)
2.) 与仅非常有针对性地删除 date 相比,上述过程差多少? “字段”,然后创建“logincount”字段? (它很可能会提高性能。但相反,与简单地删除整行并使用正确的数据从头开始重新创建相比,找出哪些字段已被删除要复杂得多......)
备注/更新:
我真正想做的是,设置 "date"字段到 null .但这在 cassandra 中不起作用。值不允许为空。因此,如果我想将其设置为 null,则必须将其删除。但是我担心这个明确的第二个删除请求会对性能产生负面影响(与仅将其设置为 null 相比)......正如所描述的,我必须首先找出哪些字段是无效的,并且最重要的是有一个值(我必须比较此状态的所有属性...)
非常感谢!
马库斯

最佳答案

我想在这里迟些澄清一些事情。

首先,关于西奥多的回答:

1)为了简单起见,所有行内部都有一个墓碑字段,所以当新行与墓碑合并时,它只是成为“有新数据的行,也记得它在时间X被删除过”。所以在这方面没有真正的惩罚。

2) 说“如果您创建和删除列值的速度足够快以至于中间不会发生刷新......墓碑 [is] 被简单地丢弃”是不正确的;墓碑总是坚持的,为了正确。也许 Theodore 的想法正好相反:如果您删除,然后插入一个新的列值,那么新列将替换墓碑(就像任何过时的值一样)。这与行情况不同,因为 Column 是存储的“原子”。

3)鉴于(2),如果随着时间的推移有许多列要删除,则删除行并插入新一可能会更高效。但是对于单个列,差异可以忽略不计。

最后,关于 Tyler 的回答,在我看来,简单地删除有问题的列比将其值更改为空的 [byte] 字符串更为惯用。

关于performance - Cassandra 和 Tombstones : Creating a Row , 删除行,重新创建行 = 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293973/

相关文章:

cassandra - 达到墓碑限制时究竟会发生什么

Javascript 动画导致 CPU 使用率高

heroku - Cassandra Astra 安全部署到 heroku

performance - 通过交错复制 3D 阵列的页面构建邻接矩阵

java - 使用 SparkConf 连接到远程 Cassandra 集群时如何获得 pass "requires authentication"?

google-analytics - 如何使用 Nifi 将 Google Analytics 数据提取到 cassandra 中?

cassandra - 用INSERT覆盖cassandra中的行,会导致墓碑吗?

java - 哈希表中的墓碑

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

c# - WPF:缓慢的模板实例化