我一直在运行我的代码来读取/写入cassandra列族。我观察到我的表大小大约为10 GB,但是同一个表的db文件占用的磁盘空间大约为400 GB,文件的版本不同。
la-2749-big-Statistics.db la-2750-big-Index.db la-2750-big-Filter.db la-2750-big-Summary.db la-2750-big-Data.db la-2750-big-Digest.adler32 la-2750-big-CRC.db la-2750-big-TOC.txt la-2750-big-Statistics.db
la-2751-big-Filter.db la-2751-big-Index.db la-2751-big-Summary.db
la-2751-big-Data.db la-2751-big-Digest.adler32 la-2751-big-CRC.db
la-2751-big-Statistics.db la-2751-big-TOC.txt
想了解文件集的最新版本是否包含所有必需的数据,是否可以删除旧版本? cassandra是否提供滚动删除此类文件的工具?
答案 0 :(得分:1)
您引用的数字是SSTable的编号(我认为它在技术上称为 generation )。具体来说,文件名的格式为:
CFName-Generation-SSTableFormat-ComponentFile
在你的情况下:
CFName = la
Generation = 275x
SSTableFormat = BIG
ComponentFile = Data.db, TOC.txt, etc...
您无法确定最后一个SSTable是否包含所有您需要的数据。如果不再引用的数据(快照会浮现在脑海中),并且它们的墓碑年龄大于gc_grace_seconds
,那么旧代使用的磁盘空间可能只发布 。
首先应检查是否有快照,并最终使用nodetool
删除它们。然后你应该调查你的墓碑如何在这些SSTable之间分配,在这种情况下,如果墓碑不能被压缩,你可能有更大的问题需要解决(例如架构重新设计或数据迁移到新的群集)。