簡體   English   中英

在Replicaset上批量插入MongoDB

[英]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或更多記錄的正確方法嗎?

我擔心性能,因為這是一個每周的過程。

  1. 您可以通過將對象數組傳遞給insert命令來使用批量插入。 您需要配置ContinueOnError並定義錯誤處理策略。 但是你應該將整個組合分成塊,以便單個吸盤不超過16Mb。

  2. 通常,為了提高插入性能,您可以嘗試限制收集時的索引量,使用未確認的寫入關注{w:0,j:0} - (在這種情況下,您將無法確認插入成功)。

是。 您可以批量插入MongoDB中的批量插入

IEnumerable<WriteConcernResult> results = collection.InsertBatch(records)

這將減少大部分到DB的往返行程,這應該加快速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM