【发布时间】:2020-12-18 23:28:15
【问题描述】:
假设我的表被建模为我只删除整个分区而不是其中的一些行。也就是说,Cassandra 永远不会创建行墓碑,而只会创建分区墓碑。
现在,据我了解,Cassandra 中的压缩过程将每个 SSTable 中的分区条目带入内存,因为它必须跨多个 SSTable 合并给定分区的所有条目。我想这个过程对于有很多已删除行(行墓碑)的分区来说成本更高,因为该过程必须遍历该分区的每个 SSTable 中的所有行,并查看哪些行被标记为删除并合并行到单个 SSTable 中。这与处理分区墓碑相反,在我的情况下,这意味着要删除整个分区。
我是否正确假设压缩过程“不必担心”处理墓碑分区?据我了解,在合并 SSTable 时,如果遇到已标记为墓碑的分区,它将简单地移动到下一个分区,并且该分区所在的所有 SSTable 都会发生这种情况。最终,压缩结束删除所有这些旧的 SSTable。
我的理解正确吗?与删除(大量)行相比,删除整个分区的成本会更低吗?
【问题讨论】: