我有一个由4个节点组成的cassandra集群,每天产生大约100gb的存储空间。对于所有插入的记录,TTL周期设置为12小时,但是,默认情况下,宽限期设置为10天。此设置导致磁盘上有大量过期数据。现在我想将宽限期改为0,但我不确定压缩过程会有多繁重,因为有大量过期数据在4天内累积。有什么想法或建议吗?

最佳答案

实际情况将取决于数据的混合程度,过去发生了多少压缩,以及您能容忍多少额外的IO。一般来说,您(现在已删除)的数据可能已与其他可能仍然存在的数据组合在一起。在大小层次上,它可以被分组成一个非常大的文件,现在不会再次压缩除非Min阈值(通常为4)文件的大小相同-新的,较低的GCG GraceEffs秒,这可能永远不会发生。数据分层是为了在整个文件过期后删除整个表而设计的—如果您没有开始使用故障诊断码,则很可能您有未完全删除的数据。
在您的情况下,可能最容易发出主压缩(nodetool compact keyspace table),它将获取所有文件并将它们压缩到一个大型sstable中,该sstable将立即清除所有逻辑删除的数据。最后会得到一个大文件(通常是负数,原因如上所述,它不会再次自然压缩),但它会立即清除其他数据。
如果没有足够的空间进行主要压缩,可以使用jmx的“forceuserdefinedcompaction”终结点一次压缩一个文件。手动操作很简单,或者有一些在线脚本可以帮助您完成这个过程(如果对您很重要的话,http://www.encql.com/product/encql-tombstone-cleaner/需要50美元)。

关于database - 在相对较大的数据上将grace_period更改为0后,Cassandra压缩过程将有多大负担?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32287128/

10-09 00:51
查看更多