Зарегистрируйтесь, чтобы продолжить обучение

Пул подключений JS: SQL

Обычно подключения к базе данных ограничены. PostgreSQL одновременно обрабатывает только один запрос на каждом клиенте. А подключение множества клиентов может привести к утечке памяти. В приложениях, где может быть множество запросов, это критически важно. В этом уроке мы разберем как можно избежать таких проблем.

Pool

Пул соединений (Connection Pool) предоставляет механизм для повторного использования соединений к базе данных. Это позволяет улучшить производительность и эффективность работы приложений.

Механизм предоставляет определенное количество доступных клиентов, пул клиентов. Их количество можно настроить через конфигурацию. При выполнении запроса произойдет запрос на первом свободном клиенте. После запроса механизм автоматически освободит клиент (вернет в пул) для новых запросов через определенный таймаут, который тоже можно настроить.

С самого начала работы с библиотекой мы уже используем этот механизм. При вызове метода pool.query() происходит запрос через первое свободное соединение. Если в приложении несколько вызовов этого метода, то запросы могут происходить через разные соединения.

Может потребоваться выполнять запросы через одно соединение. Это особенно важно для выполнения транзакций. В таком случае нужно открыть соединение пула:

import { createPool } from 'slonik'

const pool = await createPool('postgresql://')

await pool.connect(async (connection) => {
  await connection.query(
    // Первый запрос
  )
  await connection.query(
    // Второй запрос
  )
})

pool.end() // Завершаем соединение

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff