在 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