Mongodb的碎片处理
发现过程
接口报错日志中,发现了一条超时的错误日志。
排查过程
- 首先查看接口里面是否有复杂的业务逻辑 (否)
- 查看消息的表是否过大,碎片是否过多?Monodb数据库 (是)
解决方案
- 删除无用的消息数据/过期的消息 db.collections.remove()
- 处理碎片 /索引文件 db.runCommnd({compact: “somecollection”})
- 重建索引 db.collection.reIndex()
总结
以上的操作建议在业务空闲时操作,因为会产生锁可能会对业务产生影响。在使用 compact 进行操作后会发现索引文件还是要大于存储大小,这时我们应该使用 reIndex 进行重建。就会恢复原始大小了