行不存在时Cassandra删除

行不存在时Cassandra删除,cassandra,delete-row,Cassandra,Delete Row,当行不存在时,在cassandra上运行delete语句是否会影响性能?我没有在delete语句中传递IF EXISTS子句,因为它增加了检查开销。我还没有在网上找到关于这个独特用例的任何信息 Cassandra中的删除操作只是添加一个名为“墓碑”的标记,它将附加到包含数据的文件中,以“隐藏”以前存在的数据。如果您在分区内有大量的删除操作,这可能会对读取操作产生一些性能影响,例如逻辑删除通常会在数据文件中保留10天(每个表可配置) 有一个-我建议读一读。我知道墓碑,我的问题是专门针对不存在的钥匙

当行不存在时,在cassandra上运行delete语句是否会影响性能?我没有在delete语句中传递IF EXISTS子句,因为它增加了检查开销。我还没有在网上找到关于这个独特用例的任何信息

Cassandra中的删除操作只是添加一个名为“墓碑”的标记,它将附加到包含数据的文件中,以“隐藏”以前存在的数据。如果您在分区内有大量的删除操作,这可能会对读取操作产生一些性能影响,例如逻辑删除通常会在数据文件中保留10天(每个表可配置)


有一个-我建议读一读。

我知道墓碑,我的问题是专门针对不存在的钥匙(如第行“不存在”)。在不存在的数据上运行删除操作会影响性能吗。例如,如果我生成大约10条delete语句,其中只有一条语句具有主键,那么其他9条语句实际上会对性能产生影响吗?这取决于您的一致性级别和节点数,即使Cassandra在创建新的墓碑之前检查是否已经有墓碑,您可能仍然在为所有查询编写墓碑。但是,我打赌它不会检查,因为它不会检查其他写入操作,所以我认为10个查询中的每一个都会有相同的性能影响。默认情况下,Cassandra不会检查是否存在以前的数据。正如我所写的,如果执行太多这样的删除,然后运行Spark JobOk,那么性能影响可能会影响读取操作。我发现墓碑仍然会写入不存在的数据,这很奇怪。你是在暗示一个不存在的唯一主键,我按下delete键,Cassandra会创建一行,然后用墓碑标记它。对于分布式数据库来说,这似乎是一件合乎逻辑的事情。这是性能的折衷-Cassandra写操作非常快,因为它不需要读取任何数据(轻量级事务除外)-数据只是添加到memtable中。。。顺便说一句,墓碑也是为收集和UDT之类的东西生成的——因为可能有以前的数据,而新数据是部分的,所以Cassandra需要确保以前的数据不存在