同步大量数据时,Mongoose上的性能降低

时间:2019-02-25 06:17:35

标签: mongodb mongoose

当从DB A到DB B同步大量数据时,性能非常慢。我试图同步下面的记录,但是看到大约60000条记录大约需要35分钟。

我需要执行findOneAndUpdate(如果尚不存在,则使用upsert创建),然后返回该对象以进行一些处理(对于本示例,我尚未进行处理,只是运行代码会导致性能降低)下面)。

for (const syncExample of syncExampleRecords) {
    const savedObject = await example.findOneAndUpdate(
        { 'original.id': syncExample.id },
        newObject,
        { new: true, upsert: true }
    )
    .lean()
    .catch(err => {
        rej(err);
    });
}

我的模式是:

syncExampleSchema: new this.Schema(
    {
        original: {
            id: { type: String },
            created_at: {
                date: { type: Date },
                timezone_type: { type: String },
                timezone: { type: String },
            },
            updated_at: {
                date: { type: Date },
                timezone_type: { type: String },
                timezone: { type: String },
            },
        },
        parent: {
            type: this.Schema.Types.ObjectId,
            ref: 'parent_table',
        },
        source_id: { type: String },
        fk_1: {
          type: this.Schema.Types.ObjectId,
          ref: 'fk_table_1',
        },
        fk_2: {
            type: this.Schema.Types.ObjectId,
            ref: 'fk_table_2',
        },
        fk_3: {
            type: this.Schema.Types.ObjectId,
            ref: 'fk_table_3',
        },
        external_id: { type: String },
        fk_4: {
            type: this.Schema.Types.ObjectId,
            ref: 'fk_table_4',
        },
        start_at: {
            date: { type: Date },
            timezone_type: { type: String },
            timezone: { type: String },
        },
        end_at: {
            date: { type: Date },
            timezone_type: { type: String },
            timezone: { type: String },
        },
    },
    { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
)

0 个答案:

没有答案