Повышайте медленную производительность, используя секвелирование, когда выполняете вставку тысяч записей в базу данных SQL Azure. - PullRequest
1 голос
/ 21 марта 2019

Наблюдается низкая производительность при синхронизации таблицы ссылок с использованием upsert с составным ключом на mssql по сравнению с mysql.

При выполнении этой операции на mysql синхронизации 14000 записей это занимает около 0,7 минуты, тогда как синхронизация с БД Azure с использованием mssql занимает 21 минуту.

Вот моя схема:

    students_groups: this.sequelize.define(
        'students_groups',
        students_groups: {
            student: Sequelize.STRING(24),
            group: Sequelize.STRING(24),
            active: Sequelize.BOOLEAN,
        },
        {
            timestamps: true,
            createdAt: 'created_at',
            updatedAt: 'updated_at',
            indexes: [
                {
                    fields: ['student'],
                },
                {
                    fields: ['group'],
                },
                {
                    fields: ['student', 'group'],
                    unique: true
                }
            ],
        }
    )

Это цикл

    await this.SQLSchemas['students_groups'].sync().then(async () => {
        for(let record of records) {
            const where: any = {};
            where['student'] = '123456789123';
            where['group'] = '234567891234';
            await this.SQLSchemas['students_groups'].upsert(
                record,
                {
                    where: where
                }
            );
        }
    });

Пример записи:

    {
        student: '123456789123',
        group: '234567891234',
        active: 1
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...