MongoDB 4.4 WiredTiger 如何获取存储碎片统计信息
MongoDB 4.4 WiredTiger 存储碎片统计获取方法
你可以通过以下内置命令直接获取碎片相关的统计数据:
- 库级别的碎片统计
执行db.stats(1048576)即可查看当前数据库的存储相关指标,命令参数1048576代表返回值单位为MB,可根据需求调整。重点关注三个核心指标:fileSize:数据库文件在磁盘上的总占用大小,包含预分配空间和删除操作预留的未释放空间dataSize:库内所有文档实际承载数据的总大小,不包含索引、预留空间的占用storageSize:数据库实际分配给文档存储的磁盘空间,删除文档/索引后这部分空间不会立刻归还操作系统,会被MongoDB留作后续写入复用,storageSize和dataSize的差值就是当前库级别的文档存储碎片总大小
- 集合级别的碎片统计
执行db.<你的集合名>.stats(1048576)可以查看单个集合的精细化碎片指标,除了上述通用指标外,还可以查看WiredTiger引擎专属的统计项:wiredTiger.btree下的页相关指标:页利用率过低、溢出页占比过高都说明集合的B树存储结构碎片化严重wiredTiger.block-manager下的块分配相关指标:可以查看磁盘块的实际使用占比,体现文件层面的碎片化程度
- 碎片率快速计算
你可以通过以下公式快速估算当前的存储碎片率:碎片率 = (storageSize - dataSize) / storageSize * 100%
一般碎片率超过30%就可以考虑执行compact操作回收空闲空间。
注意:以上统计逻辑仅适配WiredTiger存储引擎,compact操作执行时会对目标集合加排他写锁,建议在业务低峰期执行;如果是副本集架构,建议先在所有从节点执行compact,最后再操作主节点。
内容的提问来源于stack exchange,提问作者Sameer
相关产品推荐
相关产品推荐

