我有一个Cassandra数据库用于持续稳定的消息流的最后一小时。每行的TTL设置为1小时。查询数据库确认旧记录已消失,但磁盘利用率不断上升。它有时会下降一点(由于压缩,我认为),但大约一周的整体趋势是磁盘使用量增加,直到磁盘已满,此时它停止接受数据。
杀死进程并重新启动会稍微清理一下,但是在大约8-9G的实际数据上启动大约60G的磁盘利用率。
尝试运行./nodetool compact
只是挂在那里。
磁盘消耗来自哪里?
答案 0 :(得分:2)
TTL并不意味着您的数据会从磁盘中消失。实际上它创建了一个墓碑,表明该记录已被删除。这个墓碑必须坚持另外一个节点没有收到删除或遭受网络分区的命令。在GC_GRACE秒过期(默认为10天)之前,不会删除逻辑删除。这意味着您的数据将一直存在,直到到期为止。发生此延迟,以便您有时间在最终删除墓碑之前执行修复,以防止死数据从副本中复活。