锡拉/Cassandra令牌范围压缩的磁盘空间要求

4xrmg8kj  于 2021-06-09  发布在  Cassandra
关注(0)|答案(2)|浏览(514)

我在锡拉数据库中使用sizetieredcompression策略。我删除了特定令牌范围内的一半数据(比如x到y)。我的gc\u grace\u seconds设置为6小时。我想清除在这个标记范围内创建的所有墓碑。如果我跑了 nodetool compact --start-token x --end-token y keyspace table 在gc\u grace\u秒之后,在集群中的所有节点上,会发生什么?它会删除墓碑吗?它会消耗多少磁盘空间?会和你的一样吗 nodetool compact 主要的压缩需要50%以上的空间?

cwtwac6a

cwtwac6a1#

锡拉关于 nodetool compact (见https://docs.scylladb.com/operating-scylla/nodetool-commands/compact/)不幸的是,连代币范围选项都没有。但是Cassandra的文件(https://cassandra.apache.org/doc/latest/operating/compaction/index.html)解释所谓的子范围压缩的作用:
只压缩给定的子范围是可能的—如果您知道某个令牌行为不正常,这可能会很有用—要么收集许多更新,要么收集许多删除( nodetool compact -st x -et y )将选取包含x和y之间范围的所有SSTable,并对这些SSTable发出压缩。对于stc,这很可能包括所有sstable,但是对于lcs,它可以对sstable的子集进行压缩。
对于stc,常见的情况是所有sstable都有来自整个令牌环的令牌,因此nodetool compact调用通常会调用所有sstable的完全主压缩。令牌范围选项可能不会免除任何sstable的压缩。因此,临时磁盘空间开销将和stc一样:在压缩结束时,既有旧的sstable,也有新的sstable。您假设新的sstable只有原始数据的一半,因此新sstable的大小大约是旧sstable的一半,所以这可能就是您所问的“50%”。

2cmtqfgy

2cmtqfgy2#

要删除墓碑,还需要运行 nodetool repair . 有关维修程序的详细信息,请参见此处。基本上,修复会比较节点之间的数据,以便墓碑可以安全地过期。压缩所需的空间取决于特定的工作负载,如果没有有关工作负载的数据,就不可能提供答案。但考虑到安全边际,2x是一个安全的赌注。在完全压缩之后,使用的空间将是最小的,因为每个节点上只保存一个数据副本。

相关问题