- 本文试验环境为 3 台机器的 MongoDB 副本集
Using MongoDB: 5.0.5 Using Mongosh: 1.1.8
- 官方文档:https://www.mongodb.com/docs/...
- 推荐学习 唐建法《MongoDB 高手课》
- 一般建议单个副本集容量 2TB 左右,不应超过 3TB;内存应大于索引体积大小之和
正文
列出所有数据库
> 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)标签:存储,stats,MongoDB,sum,getMongo,db,索引,var,getDB From: https://www.cnblogs.com/anenyang/p/17040201.html