MongoDB 查看索引与存储大小
简单步骤
use db
db.stats()
db.col.stats()
==================
列出所有数据库
> db.getMongo().getDBs()
查看单个库的统计信息
以下统计信息是每台机器上的统计信息,不是3台机器的和。
totalSize = storageSize + indexSize
> db.getMongo().getDB('pubmedjournal').stats()
{
db: 'pubmedjournal',
collections: 3,
views: 0,
objects: 44928355,
avgObjSize: 36032.49960482639,
dataSize: 1618880933783,
storageSize: 510386745344, // 每台机器上document占用磁盘空间总大小
freeStorageSize: 12275736576,
indexes: 13,
indexSize: 8714760192, // 每台机器上index占用磁盘空间总大小
indexFreeStorageSize: 993247232,
totalSize: 519101505536, // 每台机器上占用磁盘空间总大小
totalFreeStorageSize: 13268983808,
scaleFactor: 1,
fsUsedSize: 9056225865728,
fsTotalSize: 11680169852928,
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1667097728, i: 16 }),
signature: {
hash: Binary(Buffer.from("c787785abf50320f6620c282fbb5b1e080304032", "hex"), 0),
keyId: Long("7106121282126610433")
}
},
operationTime: Timestamp({ t: 1667097728, i: 16 })
}
列出单库下的 collection
> db.getMongo().getDB('pubmedjournal').getCollectionNames()
[ 'publisher', 'article_data', 'article' ]
单个 collection 的统计信息
> collStats = db.getMongo().getDB('pubmedjournal').getCollection('article').stats()
> collStats.storageSize
Long("496281411584")
> collStats.totalIndexSize
Long("6650699776")
> collStats.totalSize
Long("502932111360")
副本集上所有数据库的统计之和
注意这里也是1份数据的统计值,不是副本集3份数据之和。
// 所有数据库的 document 大小总和
> var sum = 0; db.getMongo().getDBs()["databases"].forEach(function(x) { sum += db.getMongo().getDB(x.name).stats().storageSize }); print(sum)
8315051458560
// 所有数据库的 index 大小总和
rs0 [primary] test> var sum = 0; db.getMongo().getDBs()["databases"].forEach(function(x) { sum += db.getMongo().getDB(x.name).stats().indexSize }); print(sum)
607059922944
// 所有数据库的占用存储的大小总和
rs0 [primary] test> var sum = 0; db.getMongo().getDBs()["databases"].forEach(function(x) { sum += db.getMongo().getDB(x.name).stats().totalSize }); print(sum)
8914942943232
由于时间差,上面的前两个数值之和与第三个值有所出入
用下面方式计算,sum1 + sum2 == sum3
var sum1 = 0; var sum2 = 0; var sum3 = 0;
db.getMongo().getDBs()["databases"].forEach(function(x) {
var stat = db.getMongo().getDB(x.name).stats();
sum1 += stat.storageSize;
sum2 += stat.indexSize;
sum3 += stat.totalSize;
});
print('sum1: ' + sum1 + ', sum2: ' + sum2 + ', sum3: ' + sum3)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~