删除了大量数据后 为什么索引大小反而变大了呢?

将表中历史数据给删除了 只保留了最近一个季度的数据

删除前

"count" : 1379345, # 总数"size" : 3823247286, # 大小"nindexes" : 4,"totalIndexSize" : 86913024, # 索引大小"indexSizes" : {    "_id_" : 12873728,    "created_at_1" : 17534976,    "storage_time_1" : 7397376,    "guid_1" : 49106944
},

删除后

"count" : 453978,"size" : 2478837459,"nindexes" : 4,"totalIndexSize" : 89522176,"indexSizes" : {    "_id_" : 12873728,    "created_at_1" : 18096128,    "storage_time_1" : 7397376,    "guid_1" : 51154944
},

删除前 VS 删除后
count: 1379345 VS 453978 diff: 925,367
size: 3823247286 VS 2478837459 diff: 1,344,409,827
totalIndexSize: 86913024 VS 89522176 diff: -2,609,152

为什么删除了这么多数据后索引大小反而变大了呢?


慕森王
浏览 1352回答 1
1回答

饮歌长啸

在WiredTiger引擎中,每个索引对应磁盘上一个独立的文件。删除大量数据后,这个文件中对应的索引也被删除了。但是空间是不会释放的,只会尽可能重用。因为想释放这些空间,就必须把空闲空间集中到文件尾,然后截断。没有哪个数据库会主动做这个事情,既低效又没多大意义。如果实在想做,了解一下compact命令,既慢还阻塞。强烈不建议。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB