[英]Bulk inserting to MongoDB on Replicaset
我正在努力將數據從SQL導入到MongoDB
我在SQL中有一個包含3081583條記錄的表,我開始在foreach
循環中將它們插入到MongoDB中
它開始插入05-06-2014 07:42:27 3081583記錄並仍在運行。
我使用C#Driver連接到MongoDB
private static MongoDatabase ConnectionOne(string dbName = "test")
{
var connectionString = "mongodb://username$passwordx.x.x.x:27018"
+ "/admin?slaveOk=true";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase(dbName);
return database;
}
我有什么辦法可以改善插入性能嗎? 這是批量插入3081583或更多記錄的正確方法嗎?
我擔心性能,因為這是一個每周的過程。
您可以通過將對象數組傳遞給insert命令來使用批量插入。 您需要配置ContinueOnError並定義錯誤處理策略。 但是你應該將整個組合分成塊,以便單個吸盤不超過16Mb。
通常,為了提高插入性能,您可以嘗試限制收集時的索引量,使用未確認的寫入關注{w:0,j:0} - (在這種情況下,您將無法確認插入成功)。
是。 您可以批量插入 : MongoDB中的批量插入
IEnumerable<WriteConcernResult> results = collection.InsertBatch(records)
這將減少大部分到DB的往返行程,這應該加快速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.