今天我一直在與MongoDB一起進行性能測試。一旦我設法使用硬盤的所有剩餘空間,測試就停在了中間位置。所以我刪除了一些文件,並在db.dropDatabase();
之後重新開始測試。但我注意到db.collection.stats();
的結果現在似乎是錯誤的。如何重置MongoDB的收集統計信息?
我的問題是,我如何使MongoDB重置/重新計算集合的統計信息?
今天我一直在與MongoDB一起進行性能測試。一旦我設法使用硬盤的所有剩餘空間,測試就停在了中間位置。所以我刪除了一些文件,並在db.dropDatabase();
之後重新開始測試。但我注意到db.collection.stats();
的結果現在似乎是錯誤的。如何重置MongoDB的收集統計信息?
我的問題是,我如何使MongoDB重置/重新計算集合的統計信息?
像mongodb這樣的聲音爲數據保留空間,並且在您再次運行測試時「知道」您需要的索引,即使此時沒有數據。
你刪除了哪些文件?如果你真的不需要這些數據,你可以停止mongod,並刪除與數據庫相對應的其他文件 - 但這僅僅是在測試環境中運行並且不共享你的數據庫纔是安全的。
我刪除的文件不是mongo的一部分。我從mongo中釋放的唯一空間是我使用'dropDatabase'。 – Mehran
好 - 刪除數據庫文件是有風險的,除非您知道您在測試系統上並且可以承受丟失數據。如果是這種情況,可以刪除mongodb的數據文件(存儲在我安裝的/ data中) - 不要刪除mongo安裝,除非您喜歡重新安裝軟件。如果你正在測試,使用虛擬機是很有用的,所以你可以每次都從乾淨的狀態開始;如果mongo爲下次運行節省空間,它會扭曲你的結果。 – kmorris
請不要給人們建議刪除文件,除非刪除整個/ data/db目錄。 db.dropDatabase()是擺脫數據庫而不冒任何風險的完美適當方式。 –
我認爲你正在尋找db.collectionName.drop()
函數,然後使用mongoimport --db dbName --collection collectionName --file fileName
重新導入你的集合來查看這些值是否正確,但很快就猜測它們是正確的。
你的意思是'db.collection.stats()'?統計數據是錯誤的? – JohnnyHK
老實說,我不確定它是否是錯誤的,但我的測試數據庫有100M文件(每個文件都有兩個字段,一個'int'和一個'date'類型)和''storageSize'一樣大:8683839472'其索引是「totalIndexSize」:5769288112'。如果我可以通過重置統計數據來確保統計數據,那將會很好。 – Mehran
文檔中沒有任何內容暗示它並不總是最新的,所以這些值是正確的。 – JohnnyHK