我试图了解删除后在 Cassandra 中回收空间的速度有多快。我找到了许多描述墓碑的文章,以及当您进行范围查询时可能产生的问题,Cassandra 必须扫描大量墓碑行以找到更稀缺的活动行。而且我知道您不能将 gc_grace_seconds 设置得太低,否则如果节点脱机并在墓碑从其余机器上消失后又回来,您将弹出僵尸记录。这一切都说得通。
但是,如果将墓碑放置在键上,则应该可以回收其余行数据的空间。
所以我的问题是,对于这张桌子:
create table somedata (
category text,
id timeuuid,
data blob,
primary key ((category), id)
);
如果我在此表中插入然后删除一些记录,并注意不要遇到上述墓碑+范围问题以及其他地方的详细情况,那么这些 blob 的空间何时会被回收?
在我的情况下,blob 可能大于推荐的大小(我相信 1mb),但它们不应该大于 ~15mb,我认为这仍然是可行的。但是,如果所有这些 blob 保留 10 天(默认 gc_grace_seconds 值)与只有键保留 10 天,那么空间差异会很大。
当我查看时,我找不到任何地方描述的这个特定方面。