MongoDB 中有一个 dbstats 调用,它为您提供磁盘上数据库的真实大小,即 fileSize。但是,dbstats 不适合在生产中使用,因为它在运行时会阻塞数据库服务器,并且可以运行很长时间。有一个据称是安全的 collstats 调用(根据同事),但它的返回值没有 fileSize 成员,只有 storageSize 成员。这是对 dbstats().dataSize、fileSize 和 storageSize 的解释,声称 storageSize 和 fileSize 是不同的。该文档模棱两可,但我已经根据经验证实了差异:
> MB = Math.pow(2, 20)
> db.stats(MB)
{
"db" : "somedb",
"collections" : 11,
"objects" : 68200,
"avgObjSize" : 1153.922991202346,
"dataSize" : 75,
"storageSize" : 117,
"numExtents" : 34,
"indexes" : 17,
"indexSize" : 8,
"fileSize" : 448,
"nsSizeMB" : 16,
"ok" : 1
}
>
有没有办法在不阻塞服务器 15 分钟的情况下使用服务器 API 计算磁盘上 MongoDB 数据库的真实大小?
更新:我正在专门寻找服务器 API。我的用例是向数据库浏览器Mongs添加磁盘使用统计信息,它不能假设直接文件系统访问。