在 MongoDB 中获取数据库的大小
Mehvish Ashiq
2022年6月2日
在 MongoDB 中工作时,你知道数据库的大小吗?今天,我们将使用 show dbs
命令和 db.stats()
方法来了解如何在 MongoDB 中获取数据库的大小。
在 MongoDB 中获取数据库的大小
我们可以使用 show dbs;
mongo shell 上的命令来获取 MongoDB 中所有数据库的存储大小,如下所示。
示例代码:
> show dbs;
输出:
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.001GB
上面的输出显示了数据库名称及其大小(以 GB 为单位)。我们使用 db.stats()
方法来获取有关数据库的详细统计信息。
它有我们需要首先了解的各个领域。以下是对每个字段的简要说明,但你可以在此处找到有关每个字段的更多详细信息。
db
- 当前数据库的名称collections
- 当前数据库中的表/集合数views
- 当前数据库中的视图数量objects
- 当前数据库中所有表(集合)中的对象编号avgObjSize
- 每个文档(一条记录)的平均大小(以字节为单位)dataSize
- 数据库包含的未压缩数据的总大小。当我们删除一个文档时,dataSize
会减小。storageSize
- 是存储在文件系统
上的数据大小。如果使用压缩,dataSize
可以大于storageSize
。indexes
- 数据库中所有集合的索引数indexSize
- 可用索引空间和分配给数据库中所有索引的空间的总和totalSize
- 为数据库中所有集合的索引和文档分配的空间总和。它包括免费和已用的存储空间。scaleFactor
- 命令使用的值fsUsedSize
和fsTotalSize
- 这些都是关于存储数据库的文件系统
。这些用于了解数据库可以增长多少。ok
- 值 1 表示查询成功执行
请记住,我们必须在使用 db.stats()
函数之前选择一个数据库。
示例代码:
> use test
> db.stats()
输出:
{
"db" : "test",
"collections" : 5,
"views" : 0,
"objects" : 15,
"avgObjSize" : 99,
"dataSize" : 1485,
"storageSize" : 135168,
"indexes" : 5,
"indexSize" : 102400,
"totalSize" : 237568,
"scaleFactor" : 1,
"fsUsedSize" : 176960913408,
"fsTotalSize" : 208499617792,
"ok" : 1
}
我们也可以根据项目要求传递比例因子。
- 如果我们想要以字节为单位的统计信息,则不传递缩放因子。
- 将
1024
传递给stats()
方法以获取以千字节 (KB) 为单位的统计信息。 - 将
1024 * 1024
传递给stats()
函数以检索以兆字节 (MB) 为单位的统计信息。 - 将
1024 * 1024 * 1024
传递给stats()
方法以查看以千兆字节 (GB) 为单位的统计信息。
请参阅以下示例作为演示。
以字节为单位获取统计信息:
>db.stats()
输出:
{
"db" : "test",
"collections" : 5,
"views" : 0,
"objects" : 15,
"avgObjSize" : 99,
"dataSize" : 1485,
"storageSize" : 135168,
"indexes" : 5,
"indexSize" : 102400,
"totalSize" : 237568,
"scaleFactor" : 1,
"fsUsedSize" : 176986320896,
"fsTotalSize" : 208499617792,
"ok" : 1
}
考虑到上面给出的 storageSize
,数据库在 filesystem
上占用 0.1352 MB
。同样,我们可以在以下示例中获取数据库的大小。
获取 KB 中的统计信息:
> db.stats(1024)
输出:
{
"db" : "test",
"collections" : 5,
"views" : 0,
"objects" : 15,
"avgObjSize" : 99,
"dataSize" : 1.4501953125,
"storageSize" : 132,
"indexes" : 5,
"indexSize" : 100,
"totalSize" : 232,
"scaleFactor" : 1024,
"fsUsedSize" : 172839080,
"fsTotalSize" : 203612908,
"ok" : 1
}
以 MB 为单位获取统计信息:
> db.stats(1024*1024)
输出:
{
"db" : "test",
"collections" : 5,
"views" : 0,
"objects" : 15,
"avgObjSize" : 99,
"dataSize" : 0.0014162063598632812,
"storageSize" : 0.12890625,
"indexes" : 5,
"indexSize" : 0.09765625,
"totalSize" : 0.2265625,
"scaleFactor" : 1048576,
"fsUsedSize" : 168788.66796875,
"fsTotalSize" : 198840.73046875,
"ok" : 1
}
以 GB 为单位获取统计信息:
> db.stats(1024*1024*1024)
输出:
{
"db" : "test",
"collections" : 5,
"views" : 0,
"objects" : 15,
"avgObjSize" : 99,
"dataSize" : 0.0000013830140233039856,
"storageSize" : 0.000125885009765625,
"indexes" : 5,
"indexSize" : 0.000095367431640625,
"totalSize" : 0.00022125244140625,
"scaleFactor" : 1073741824,
"fsUsedSize" : 164.83288955688477,
"fsTotalSize" : 194.18040084838867,
"ok" : 1
}
作者: Mehvish Ashiq