Продолжайте медленно (20 секунд) обновлять 4000 записей (можно ли создать объем?)

#node.js #typescript #express #sql-update #sequelize.js

Вопрос:

Я использую sequelize для обновления ~ 4000 строк, и для завершения требуется более 20 секунд. В идеале я бы создал массив с полями, которые меня интересуют, и использовал bulkCreate с updateOnDuplicate… но человек, реализующий это ранее, сказал, что он не может его использовать, так как вам нужен первичный ключ (или уникальное ограничение) в записях, которые вы передаете в bulkCreate. К сожалению, у нас здесь нет такой информации. Первый вопрос — нет ли другого способа, которым мы могли бы использовать bulkCreate с каким where -либо предложением?

Поэтому сегодня я зацикливаюсь и звоню .update (вводя обещания в массив и ожидая этого обещания.весь этот массив). В предложениях where выбираются другие 2 поля. Я честно удивлен, сколько времени это занимает (обновление 5 полей на 4000 записей). Я добавил индекс над 2 полями в предложении where (первое поле в индексе является выборочным), но он все еще работает медленно. Размер таблицы сегодня составляет всего около 8000 строк и около 15 столбцов.

Я не знаю, происходит ли медлительность от драйвера sequelize/database или от самой базы данных. Есть ли способ измерить это в моем приложении node express?

Мне интересно, какие еще существуют варианты. Будет ли выполнение всех обновлений в рамках одной транзакции здесь давать какие-либо преимущества в производительности (поля, которые я изменяю внутри обновления, меняются нечасто… так что не беспокойтесь о необходимости их блокировки).

Спасибо