Как разработчик, вы, возможно, не тратили много времени на размышления о соединениях с базами данных. Одно подключение к базе данных не требует больших затрат, но по мере увеличения масштабов могут возникнуть проблемы. Итак, давайте погрузимся в мир пулов соединений и посмотрим, как они могут помочь нам создавать более производительные приложения.

Типичный способ подключения к базе данных

Прежде чем мы перейдем к пулу, давайте быстро рассмотрим, что происходит, когда ваше приложение подключается к базе данных для выполнения операции с базой данных:

  1. Приложение использует драйвер базы данных для открытия соединения.
  2. Сетевой сокет открывается для соединения приложения и базы данных.
  3. Пользователь аутентифицирован (имеется в виду пользователь базы данных).
  4. Операция завершена, и соединение может быть закрыто.

Как мы видим, открытие и закрытие соединения и сетевого сокета — это многоэтапный процесс, требующий вычислительных ресурсов. Однако если соединение не закрывать, а постоянно держать открытым, также потребляются ресурсы.

Зачем объединять подключения к базе данных?

Для простого приложения может быть достаточно обычного способа подключения к базам данных
, но когда ваше приложение получает некоторое количество пользователей, простая операция с базой данных может занять несколько секунд.
Кроме того, постоянное открытие и закрытие соединений для каждого операция с базой данных
потребляет слишком много ресурсов.

Часто имеет смысл найти способ держать соединения открытыми и передавать их от операции к операции по мере необходимости, а не открывать и закрывать совершенно новое соединение для каждой операции.

Что такое пул соединений с базой данных?

Пул соединений с базой данных – это способ снизить затраты на открытие и закрытие соединений за счет поддержки пула открытых соединений, которые при необходимости можно передавать из операции базы данных в операцию базы данных.

Как создать и настроить пулы соединений?

В качестве примера я возьму PostgreSQL и SequelizeORM для демонстрации.

Но почти все виды баз данных или ORM поддерживают пул соединений.

Ниже кода фрагмент кода содержит некоторые значения по умолчанию

pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000,
  } 

max-> максимальное количество пулов клиентов может расширяться одновременно.

min -> одновременно может расширяться минимальное количество клиентов.

acquire -> Максимальное время (в миллисекундах), в течение которого пул будет пытаться установить соединение, прежде чем выдаст ошибку.

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

Это минимальные настройки, необходимые для быстрого начала работы.

Вы всегда оглядываетесь назад и добавляете дополнительную конфигурацию в соответствии с вашими требованиями.

Спасибо за чтение.

Не стесняйтесь делиться своими мыслями в разделе комментариев.

Подпишитесь на Prodip Kumar Paul, чтобы узнать больше подобного контента.