Cassandra 是否释放被覆盖数据的磁盘空间?

Cassandra 是否释放被覆盖数据的磁盘空间?,cassandra,Cassandra,我有一个表,它的行经常使用常规的INSERT语句被覆盖。此表包含约50GB的数据,大部分数据每天都会被覆盖 然而,根据OpsCenter的说法,磁盘使用率一直在上升,并且没有释放 我已经验证了行正在被覆盖,而不仅仅是被追加到表中。但它们显然仍在占用磁盘空间 如何释放磁盘空间?在封面下,Cassandra在这些写入过程中的方式是,向SSTable追加一个新行,该行带有较新的时间戳。执行读取时,最新的行(基于时间戳)将作为行返回给您。但是,这也意味着您要使用两倍的磁盘空间来完成此任务。直到Cassa

我有一个表,它的行经常使用常规的
INSERT
语句被覆盖。此表包含约50GB的数据,大部分数据每天都会被覆盖

然而,根据OpsCenter的说法,磁盘使用率一直在上升,并且没有释放

我已经验证了行正在被覆盖,而不仅仅是被追加到表中。但它们显然仍在占用磁盘空间


如何释放磁盘空间?

在封面下,Cassandra在这些写入过程中的方式是,向SSTable追加一个新行,该行带有较新的时间戳。执行读取时,最新的行(基于时间戳)将作为行返回给您。但是,这也意味着您要使用两倍的磁盘空间来完成此任务。直到Cassandra运行压缩操作,旧的行才会被删除,磁盘空间才会恢复。以下是有关Cassandra如何写入磁盘的一些信息,解释了该过程:

压缩是一个节点一个节点地完成的,这是一项非常占用磁盘的操作,可能会影响群集在运行期间的性能。可以使用nodetool compact命令运行手动压缩:


正如Aaron在上面的评论中提到的那样,每天覆盖集群中的所有数据并不是Cassandra的最佳用例,因为像这样的问题

你的压缩策略是什么?你能举一个表和insert语句的例子吗?“这个表包含~50GB的数据,大部分数据每天都会被覆盖。”-是的,这并不是Cassandra的最佳使用案例。感谢链接-理解压缩和调整压缩在这里有点帮助!