Ответ
В PostgreSQL нет жесткого лимита на количество операций в одной транзакции, но есть практические ограничения:
- Лимит по памяти – транзакция хранит изменения в памяти, пока не завершится.
- Лимит по времени – длинные транзакции блокируют ресурсы.
- Лимит по размеру 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-вставки