Я - автор библиотеки.
Будет ли команда BEGIN отправлена вместе с первым запросом или раньше, в отдельном пакете?
ДО.
Будет ли команда COMMIT отправлена вместе со вторым запросом или после?
ПОСЛЕ.
Будет ли эта транзакция совершать 2, 3 или 4 поездки в оба конца?
4
Вы бы сказали, что есть место для оптимизации или что с использованиемможет быть полезна библиотека нижнего уровня (для задержки)?
Могут быть некоторые, в зависимости от того, чего вы пытаетесь достичь.Реализация по умолчанию позволяет легко / стандартно обрабатывать логику транзакции и регистрировать все, что происходит (см. pg-monitor ).Все оптимизировано в методе tx
, что упрощает логическую безопасную обработку любой ситуации.
Единственная ситуация, когда вы хотите оптимизировать ее, если вам необходимо выполнить огромное количество микротранзакцийпотому что в противном случае это не стоит делать с точки зрения производительности.
В таком особом случае, как этот, вы можете выполнить всю транзакцию как один запрос, объединяя все запросы в один.Для этого существует метод helpers.concat , который помогает динамически создавать такой объединенный запрос.
Стоит отметить, что если вам нужны вложенные транзакции, то вы больше не сможете их оптимизировать,поскольку логика вложенных транзакций глубоко зависит от логики отдельных запросов, которые переводятся в обещания, а затем объединяются в цепочки, что согласуется с логикой транзакций PostgreSQL.Если вы попытаетесь обойти это, скорее всего, все рухнет, поскольку вложенные транзакции, как правило, слишком сложны, чтобы обрабатывать их вручную.