Mongodb
在 MongoDB 中重新載入數據的最佳方法是什麼
我正在使用最新驅動程序使用YCSB 框架對 MongoDB 進行基準測試。
在基準測試期間,我廣泛地更改集群設置(添加/刪除分片)並定期刪除/插入大約 5GB 的工作負載。為了讓這個過程更快,我嘗試了兩種方法,
在第一種方法中,我使用
db.collection.remove()
函式從數據中刪除文件,這需要大約 20 分鐘才能從一個分片中刪除 5GB 的文件。此方法保留索引,從而提高插入吞吐量。在第二種方法中,我使用
db.collection.drop()
函式從幾乎立即刪除數據的數據中刪除文件。但是,由於跨分片平衡數據,插入需要更長的時間。有沒有更好的方法來完成這些任務?如果不是,推薦兩者中的哪一個?
我建議研究預拆分和/或使用散列分片鍵進行插入並堅持刪除集合(使用 remove 基本上每次寫入都會刪除,所以它總是很慢)。散列分片鍵通常是最容易上手的。
如果您希望測量寫入吞吐量,那麼這些方法中的每一種(如果做得正確)都將允許您立即利用所有可用的分片,而不是先點擊一個分片,等待平衡器移動數據等(另外,如果您使用單調遞增的分片鍵,那麼您將只能寫入單個分片 - 請參閱三個陷阱文章以獲得所有這些的良好描述)。