Mongodb

db.collection.stats 返回的 Object.bsonsize 和 avgObjSize 有什麼區別?

  • March 19, 2015

在我的收藏中,我的文件似乎比較相似。我需要知道我的生產伺服器需要多少儲存空間來儲存我的文件,這就是我查詢的原因:

db.collectionName.stats()

我的欄位 avgObjSize 大約是 6442 字節。我在我的收藏中選擇了一個隨機文件,我輸入了:

Object.bsonsize(db.collectionName.find({"_id" :         ObjectId("5508497c51a990da07b07106")}))

我獲得了 810 個字節。

為什麼我有這麼大的差異?

我還注意到我儲存的文件越多, avgObjSize 減少的越多……這正常嗎?(我檢查了,我的文件不是空的。)

它是一個開發伺服器,所以我使用的是 Red Hat Enterprise Linux 5.8,它是 32 位版本。

我的欄位 avgObjSize 大約是 6442 字節。我在我的收藏中選擇了一個隨機文件,我輸入了:

Object.bsonsize(db.collectionName.find({"_id" : ObjectId(“5508497c51a990da07b07106”)}))

我獲得了 810 個字節。

為什麼我有這麼大的差異?

db.collection.find()方法返回一個游標,因此您計算的是游標對象的大小而不是文件的大小。

如果要測量 BSON 大小,應使用db.collection.findOne()返回單個文件:

Object.bsonsize(db.collectionName.findOne(
   {"_id" : ObjectId("5508497c51a990da07b07106") }
))

我還注意到我儲存的文件越多, avgObjSize 減少的越多……這正常嗎?(我檢查了,我的文件不是空的。)

平均值基於集合中文件的大小,因此聽起來您的趨勢是隨著時間的推移插入更小的文件。正常行為完全取決於您的案例;-)

引用自:https://dba.stackexchange.com/questions/95558