如何解决在Cassandra中,与压缩期间的行/单元墓碑相比,分区墓碑固有地便宜吗?
比方说,我的表经过建模,因此我只删除整个分区,而不是其中的某些行。也就是说,Cassandra将永远不会创建行逻辑删除,而只会创建分区逻辑删除。
现在,据我所知,Cassandra中的压缩过程将每个SSTables中的分区条目带入内存,因为它必须合并多个SSTables中给定分区的所有条目。我可以想象这个过程对于具有很多已删除行(行逻辑删除)的分区来说会比较昂贵,因为该进程必须遍历该分区的每个SSTable的所有行,并查看哪些标记为要删除并合并行到一个SSTable中。在本例中,这与处理分区逻辑删除相反,这意味着整个分区都将被删除。
我是否正确假设压缩过程“不必担心”处理逻辑删除的分区?据我了解,合并SSTables时,如果遇到一个已被标记为逻辑删除的分区,它将简单地移至下一个分区,并且该分区所在的所有SSTables都会发生这种情况。最终,压缩结束删除所有这些旧的SSTable。
我的理解正确吗?与删除(大量)行相比,删除整个分区是否会更便宜?
解决方法
是的,您的理解是正确的,对于压缩过程,分区逻辑删除比行逻辑删除更好。它还有助于读取流程。当您使用分区逻辑删除而不是行逻辑删除时,读取速度很快。您可以在博客中引用the lastpickle blog和评论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。