Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1601957
  • 博文数量: 184
  • 博客积分: 3044
  • 博客等级: 中校
  • 技术积分: 2467
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 15:04
文章分类

全部博文(184)

文章存档

2022年(4)

2021年(3)

2020年(1)

2019年(5)

2018年(13)

2017年(6)

2016年(10)

2015年(11)

2014年(11)

2013年(13)

2012年(23)

2011年(25)

2010年(2)

2008年(1)

2007年(5)

2006年(51)

分类: NOSQL

2021-12-29 17:47:05

MongoDB删除了无用数据后,并不会释放磁盘空间。需使用compact或repairDatabase命令。
repairDatabase
4.2版本开始移除了db.repairDatabase()命令。并且在WiredTiger存储引擎的数据库中,不会压缩数据释放磁盘空间。

预计可回收空间
单点或副本集,单位为字节。
db.getCollection('my_test_coll').stats().wiredTiger["block-manager"]["file bytes available for reuse"]
分片模式(有多个shard,修改shard1为对应的值即可),单位为字节。
db.getCollection('my_test_coll').stats().shards["shard1"].wiredTiger["block-manager"]["file bytes available for reuse"]
compact
指定集合名称进行压缩数据释放空间(只能指定一个)。


db.runCommand( { compact : 'mycollectionname' } )
获取所有集合遍历释放。


db.getCollectionNames().forEach(function (collectionName) {
    print('Compacting: ' + collectionName);
    db.runCommand({ compact: collectionName });
});
对于集合采用WiredTiger存储引擎的,将释放不使用的磁盘空间通过重写(rewrite)集合和索引。


对于集合采用MMAPv1存储引擎的,将整理集合数据文件的碎片以及重建(recreate)集合的索引,不使用的磁盘空间不会释放,但会保留着给将来的数据使用(如果要在MMAPv1数据库中释放空间,应使用initial sync同步初始化)
阅读(1004) | 评论(0) | 转发(0) |
0

上一篇:mongodb日志过虑与排序

下一篇:Linux DNF

给主人留下些什么吧!~~