ITPub博客

首页 > > > compact检测机制:

compact检测机制:

作者:浪花小雨滴 时间:2020-04-30 14:03:28 0 删除 编辑

compact检测机制:
compact命令发出后,其实最终是由存储引擎wiredTiger来完成,在执行期间,会不断将集合文件后面的数据往前面空闲的空间写,然后逐步truncate文件回收物理空间;每一轮compact前,WiredTiger都会做如下检查:
  • 前面80%的空间里,是否有20%的空闲空间,用于写入文件后面的20%的数据,或
  • 前面90%的空间里,是否有10%的空闲空间,用于写入文件后面的10%的数据;
如果上述两条一条都不满足,那么执行compact肯定无法回收10%的空闲空间,此时compact就会退出执行,所以有时候对一个大集合执行了compact后很快得到ok:1,且集合空间变化不大, 那么说明此集合可能没有收缩的余地,没有必要执行compact

预估可回收空间
可通过命令db.collname.stats().wiredTiger["block-manager"] 查看
rs1:PRIMARY> db.MsgResultDto.stats().wiredTiger["block-manager"]
{
    "allocations requiring file extension" : 0,
    "blocks allocated" : 8559169,
    "blocks freed" : 3750452,
    "checkpoint size" : 99337433088,
    "file allocation unit size" : 4096,
    "file bytes available for reuse" : 31563096064,    ---表示集合可被回收的空闲空间
    "file magic number" : 120897,
    "file major version number" : 1,
    "file size in bytes" : 130900664320,
    "minor version number" : 0
}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3138332/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: vim快速入门
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40027