Сколько операций можно выполнить за одну транзакцию

«Сколько операций можно выполнить за одну транзакцию» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PostgreSQL нет жесткого лимита на количество операций в одной транзакции, но есть практические ограничения:

  1. Лимит по памяти – транзакция хранит изменения в памяти, пока не завершится.
  2. Лимит по времени – длинные транзакции блокируют ресурсы.
  3. Лимит по размеру WAL – слишком большие транзакции могут переполнить журнал.

Пример транзакции с несколькими операциями:

tx, err := db.Begin()
_, err = tx.Exec("INSERT INTO users(name) VALUES($1)", "Alice")
_, err = tx.Exec("UPDATE stats SET count = count + 1")
err = tx.Commit()

Рекомендации:

  • Разбивайте очень большие транзакции на части
  • Избегайте транзакций, которые выполняются дольше нескольких секунд
  • Для массовых операций используйте COPY или batch-вставки