批量插入到MongoDB上的复制集

本文关键字:复制 MongoDB 插入 | 更新日期: 2023-09-27 18:02:06

我正在导入数据形式SQL到MongoDB

我有一个SQL表3081583条记录,我开始在foreach循环中插入这些到MongoDB

它在05-06-2014 07:42:27 3081583开始插入记录,并且仍在运行。

My connection to MongoDB using c# Driver

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条或更多记录的批量插入的正确方法吗?

我很担心性能,因为这是一周一次的过程。

批量插入到MongoDB上的复制集

  1. 您可以通过传递对象数组来使用批量插入命令。您需要配置ContinueOnError并定义错误处理策略。但是你应该把整个集合分割成块,这样每个chuck就不会超过16Mb。

  2. 一般来说,为了提高插入性能,您可以尝试限制集合上的索引数量,使用未确认的写关注点{w:0, j:0} -(在这种情况下,您将无法确认插入是否成功)。

是。您可以批量插入:bulk Inserts in MongoDB

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

这将减少大多数到DB的往返,这应该会加快速度。