mongodb統計集合大小

//=====================================查看刪除數據釋放空間大小 執行ttl索引前後各執行一次===============================================
/*1傳入集合名稱給clsName 執行腳本
  2返回現有集合大小是多少 
  3執行ttl索引否  確認索引執行完畢
  4再次執行該腳本
  4兩次結果取差額爲刪除數據所釋放出來的空間*/
  
var clsName=['ysqxxZcbwVO','ysqRzVO','ysqJyxxVO','dlStVO'];
function getReadableFileSizeString(clsName) {
    for(var j=0;j<clsName.length;j++){
        var name=clsName[j];
        var cun=db.getCollection(name).find({}).count();
        var fileSizeInBytes= db.getCollection(name).stats().size;
        var i = -1;
        var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
        do {
            fileSizeInBytes = fileSizeInBytes / 1024;
            i++;
        } while (fileSizeInBytes > 1024);
        print(name+'----'+cun+'條----------'+Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i]);
    }
};
getReadableFileSizeString(clsName);


//執行索引前統計的結果
ysqxxZcbwVO----35235552條----------709.3 GB
ysqRzVO----8892694條----------6.0 GB
ysqJyxxVO----35600828條----------6.6 GB
dlStVO----6336866條----------4.2 GB
//執行索引後統計的結果


//釋放空間=執行索引前統計的結果-執行索引後統計的結果



//=====================================執行ttl索引===================================================================================================================
// 1. 注意發佈此腳本會導致ysqxxZcbwVO,ysqRzVO,ysqJyxxVO只保留3個月的數據。
// 2. 注意ttl索引只能先刪除再建立,如果數據量大的話可能會阻塞數據庫,建議等晚上升級版本的時候發佈。
// 3. 過期時間設置爲3個月,+8個小時修正時區問題,+12個小時讓刪除操作儘可能發生在晚上。
// 4. 由於生產數據過大 所以先刪除19年以前的數據 然後執行ttl索引

//生產已做
db.getCollection('ysqRzVO').dropIndex("lrrq_1");
db.getCollection('ysqRzVO').createIndex({"lrrq":1}, {expireAfterSeconds: 60*60*24*90+60*60*12+60*60*8}, {background: true});




db.getCollection('ysqxxZcbwVO').find({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}}).count()
db.getCollection('ysqxxZcbwVO').remove({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}})
db.getCollection('ysqxxZcbwVO').dropIndex("lrrq_1");
db.getCollection('ysqxxZcbwVO').createIndex({"lrrq":1}, {expireAfterSeconds: 60*60*24*90+60*60*12+60*60*8}, {background: true});


db.getCollection('ysqJyxxVO').find({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}}).count()
db.getCollection('ysqJyxxVO').remove({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}})
db.getCollection('ysqJyxxVO').dropIndex("lrrq_1");
db.getCollection('ysqJyxxVO').createIndex({"lrrq":1}, {expireAfterSeconds: 60*60*24*90+60*60*12+60*60*8}, {background: true});

db.getCollection('dlStVO').find({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}}).count()
db.getCollection('dlStVO').remove({lrrq:{$lt : new ISODate('2019-01-01 00:00:00.141Z')}})
db.getCollection('dlStVO').dropIndex("lrrq_1");
db.getCollection('dlStVO').createIndex({"lrrq":1}, {expireAfterSeconds: 60*60*24*90+60*60*12}, {background: true});

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章