在 MongoDB 中获取数据库的大小

Mehvish Ashiq 2022年6月2日
在 MongoDB 中获取数据库的大小

在 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() 方法来获取有关数据库的详细统计信息。

它有我们需要首先了解的各个领域。以下是对每个字段的简要说明,但你可以在此处找到有关每个字段的更多详细信息。

  1. db - 当前数据库的名称
  2. collections - 当前数据库中的表/集合数
  3. views - 当前数据库中的视图数量
  4. objects - 当前数据库中所有表(集合)中的对象编号
  5. avgObjSize - 每个文档(一条记录)的平均大小(以字节为单位)
  6. dataSize - 数据库包含的未压缩数据的总大小。当我们删除一个文档时,dataSize 会减小。
  7. storageSize - 是存储在文件系统上的数据大小。如果使用压缩,dataSize 可以大于 storageSize
  8. indexes - 数据库中所有集合的索引数
  9. indexSize - 可用索引空间和分配给数据库中所有索引的空间的总和
  10. totalSize - 为数据库中所有集合的索引和文档分配的空间总和。它包括免费和已用的存储空间。
  11. scaleFactor - 命令使用的值
  12. fsUsedSizefsTotalSize - 这些都是关于存储数据库的文件系统。这些用于了解数据库可以增长多少。
  13. 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
}

我们也可以根据项目要求传递比例因子。

  1. 如果我们想要以字节为单位的统计信息,则不传递缩放因子。
  2. 1024 传递给 stats() 方法以获取以千字节 (KB) 为单位的统计信息。
  3. 1024 * 1024 传递给 stats() 函数以检索以兆字节 (MB) 为单位的统计信息。
  4. 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
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相关文章 - MongoDB Database