Используя PostgreSQL COPY вместо INSERT с Sequelize.bulkCreate ()? - PullRequest
0 голосов
/ 20 января 2020

Чтение несколько источников с указанием того, как COPY быстрее, чем INSERT операторы в PostgreSQL при выполнении массовых загрузок. Sequelize. js имеет функцию bulkCreate() для выполнения массовых вставок.

Возможно ли для Sequelize делать COPY вместо INSERT, и ожидаете ли вы COPY Быть быстрее? Я принимаю 10 000-1 000 000 строк за раз в каждом из 5 параллельных процессов, выполняемых в общей сложности 2 часа. Надеюсь, что некоторые ускорения могут быть достигнуты с помощью COPY и Sequelize.

Фактическая база данных использует расширение TimescaleDB

Пример кода

let Note = sequelize.define('notes', {
    description: Sequelize.STRING
});

let notes = [
    { description: 'Tai chi in the morning' },
    { description: 'Visited friend' },
    { description: 'Went to cinema' },
    { description: 'Listened to music' },
    { description: 'Watched TV all day' },
    { description: 'Walked for a hour' },
];

Note.bulkCreate(notes, { logging: console.log }).then(() => {
    console.log('notes created');
}).catch((err) => {
    console.log(err);
}).finally(() => {
    sequelize.close();
});

Создано SQL

INSERT INTO "notes" ("id","description") VALUES (DEFAULT,'Tai chi in the morning'),
(DEFAULT,'Visited friend'),(DEFAULT,'Went to cinema'),(DEFAULT,'Listened to music'),
(DEFAULT,'Watched TV all day'),(DEFAULT,'Walked for a hour') RETURNING *;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...