首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra -将一个巨大的字段设置为null,但不返回磁盘空间。

Cassandra -将一个巨大的字段设置为null,但不返回磁盘空间。
EN

Stack Overflow用户
提问于 2020-06-18 07:11:22
回答 1查看 105关注 0票数 2

在我们的键空间中,我们只有几个表,其中一个包含了大部分数据。在该表中,只有一个ColumnEntity(例如,列X)包含99.99%的数据。当数据不再相关时,我们将TTL设置几天,并将列X设置为null(来自java进程)。理想情况下,这应该立即释放磁盘上的大量空间,因为X列拥有90%的键空间数据,但我们没有看到磁盘空间使用量的任何减少。

而且,在TTL过期后,数据正在完全删除,但我们仍然没有看到任何空间被释放出来。

我们少了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 08:21:19

在Cassandra中,不需要修改任何数据--所有的文件都是不可变的.当您执行删除或插入null (它是相同的)时,除了磁盘上有以前的数据之外,特殊的标记是添加了。因此,当您添加数据时,实际上添加了更多的数据:-)

当SSTable文件通过背景压缩压缩时,数据的实际删除就会发生。文件压缩的调度取决于所使用的压缩策略及其配置选项。有些情况下,当大文件中有旧数据时,可能会有一段时间没有压缩。根据Cassandra/DSE的版本,您可以通过在每个节点上执行nodetool compact -s来强制压缩所有数据,但这需要有足够的磁盘空间(表的大小)。另一个机会是在单独的nodetool garbagecollect -g CELL上使用SSTables,但它也需要空闲的磁盘空间。

P.S.我建议至少在DS201上上DataStax学院课程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62444324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档