Ответы пользователя по тегу PostgreSQL
  • Пул соединений с БД и транзакции: с чем это кушают?

    petushok55
    @petushok55 Автор вопроса
    Обучаюсь на практике.
    Фига се 6 человек подписалось на вопрос.
    Для себя я этот вопрос решил.
    И вот как:
    Сам пул (pool.query) я использую для всех юзеров, если запрошен какой-то роутер, который просто выводит информацию (исключительно select запросы)
    А для остальных роутеров(путей), где надо совершать какие-то действия со строками в БД (update,delete,insert) я внутри обработчика всё заворачиваю в try>catch>finaly
    в try открываю новое соединение client = await pool.connect();
    ставлю изоляцию serializable делаю все запросы, потом commit или rollback в зависимости от условий.
    в finaly высвобождаю соединение
    if (client) {client.release();}
    И всё работает отлично, важно, чтобы внутри самого блока try, где есть транзакция не делать больше одного запроса update,insert к одним и тем же полям.

    Ещё важно, если вы используете самую строгую изоляцию, во всех других путях тоже важно использовать такой же уровень изоляции.

    Вот и всё
    Ответ написан
    Комментировать