Вопрос проверяет понимание оптимизации записи в базу, разницу между транзакциями и пакетными вставками.
Транзакция объединяет несколько операций в одну логическую единицу с гарантией атомарности. Batch-insert — оптимизация вставки большого количества строк в одном запросе. Batch быстрее, но транзакция надёжнее при сложной логике.
Транзакция — набор SQL-операций, выполняемых атомарно (BEGIN … COMMIT). Если что-то пошло не так — ROLLBACK. Гарантирует ACID.
Batch insert — это оптимизация массовой вставки:
INSERT INTO orders (id, amount)
VALUES (1, 100), (2, 200), (3, 300);Сравнение:
Транзакция: много запросов → одна фиксация. Гарантия консистентности.
Batch-insert: одна команда вставки множества строк. Минимизирует round-trips, но менее гибкий (только INSERT).
Когда использовать:
Batch-insert — при загрузке больших объёмов данных (ETL, миграции).
Транзакции — при сложных бизнес-операциях (например, списание средств + запись истории).
Вывод: batch — про скорость, транзакция — про надёжность. В реальной системе часто комбинируют.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
Golang
Postgres
Ключевые слова
Подпишись на Golang Developer в телеграм