PavelUstyugov
@PavelUstyugov
Самозанятый веб-разработчик

Дает ли оправдываемый прирост групповое добавление записей в базу?

В Laravel можно делать групповое добавление/обновление записей. Дает ли это оправдываемый прирост по сравнению с поштучным добавлением в цикле?

Пока у нас добавление происходило в цикле поскольку одновременно нужно было добавлять записи в разные связанные между собой модели примерно вот так:
Пока Цикл
  ДобавитьЗаказчика
  ДобавитьЗакупку
КонецЦикла;


сейчас есть намерение сформировать два массива данных и сделать групповое добавление сначала в первую модель, потом в другую. Даст ли это выигрыш в производительности и можно ли как-нибудь в таком случае связать эти модели по полю id ? Есть ли какой-нибудь колбэк чтобы запоминать добавленные id, чтобы потом обновить связи после добавления записей?

Пока Цикл
ДобавитьНаборПараметровВМассивЗаказчиков
ДобавитьНаборПараметровВМассивЗакупок
КонецЦИкла

СоздатьИлиОбновитьМассивЗаказчиков()
СоздатьИлиОбновитьМассивЗакупок()
ПрописатьВМассивЗакупокIDЗаказчиков
  • Вопрос задан
  • 597 просмотров
Пригласить эксперта
Ответы на вопрос 2
glaphire
@glaphire
PHP developer
Batch insert дает ощутимый прирост, но Вам нужно продумать, как сохранить/обновить те связи, о которых Вы писали, каких-то колбеков нет, нужно самому заботиться о получении/хранении id после вставок.
Ответ написан
Adamos
@Adamos
Для вас же, как я понимаю, не страшна неконсистентность данных между этими двумя вставками.
То есть наличие в базе заказчиков, у которых еще не прописана закупка.
Тогда смело разбивайте на две транзакции.
Естественно, они будут заметно быстрее, чем куча вставок по одной строчке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ремарк Тюмень
от 30 000 руб.
HTML Academy Санкт-Петербург
от 60 000 руб.
UpSolution Москва
от 80 000 руб.
15 сент. 2019, в 17:24
5000 руб./за проект
15 сент. 2019, в 16:40
8000 руб./за проект