鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 刪除了大量數(shù)據(jù)后 為什么索引大小反而變大了呢?

刪除了大量數(shù)據(jù)后 為什么索引大小反而變大了呢?

將表中歷史數(shù)據(jù)給刪除了 只保留了最近一個(gè)季度的數(shù)據(jù)

刪除前

"count" : 1379345, # 總數(shù)
"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

為什么刪除了這么多數(shù)據(jù)后索引大小反而變大了呢?

回答
編輯回答
淚染裳

在WiredTiger引擎中,每個(gè)索引對(duì)應(yīng)磁盤(pán)上一個(gè)獨(dú)立的文件。刪除大量數(shù)據(jù)后,這個(gè)文件中對(duì)應(yīng)的索引也被刪除了。但是空間是不會(huì)釋放的,只會(huì)盡可能重用。因?yàn)橄脶尫胚@些空間,就必須把空閑空間集中到文件尾,然后截?cái)唷](méi)有哪個(gè)數(shù)據(jù)庫(kù)會(huì)主動(dòng)做這個(gè)事情,既低效又沒(méi)多大意義。
如果實(shí)在想做,了解一下compact命令,既慢還阻塞。強(qiáng)烈不建議。

2018年4月24日 19:24