在Cassandra中,与压缩期间的行/单元墓碑相比,分区墓碑固有地便宜吗?

问题描述

比方说,我的表经过建模,因此我只删除整个分区,而不是其中的某些行。也就是说,Cassandra将永远不会创建行逻辑删除,而只会创建分区逻辑删除。

现在,据我所知,Cassandra中的压缩过程将每个SSTables中的分区条目带入内存,因为它必须合并多个SSTables中给定分区的所有条目。我可以想象这个过程对于具有很多已删除行(行逻辑删除)的分区来说会比较昂贵,因为该进程必须遍历该分区的每个SSTable的所有行,并查看哪些标记为要删除并合并行到一个SSTable中。在本例中,这与处理分区逻辑删除相反,这意味着整个分区都将被删除。

我是否正确假设压缩过程“不必担心”处理逻辑删除的分区?据我了解,合并SSTables时,如果遇到一个已被标记为逻辑删除的分区,它将简单地移至下一个分区,并且该分区所在的所有SSTables都会发生这种情况。最终,压缩结束删除所有这些旧的SSTable。

我的理解正确吗?与删除(大量)行相比,删除整个分区是否会更便宜?

解决方法

是的,您的理解是正确的,对于压缩过程,分区逻辑删除比行逻辑删除更好。它还有助于读取流程。当您使用分区逻辑删除而不是行逻辑删除时,读取速度很快。您可以在博客中引用the lastpickle blog和评论。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...