在 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 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