Как разработчик, вы, возможно, не тратили много времени на размышления о соединениях с базами данных. Одно подключение к базе данных не требует больших затрат, но по мере увеличения масштабов могут возникнуть проблемы. Итак, давайте погрузимся в мир пулов соединений и посмотрим, как они могут помочь нам создавать более производительные приложения.
Типичный способ подключения к базе данных
Прежде чем мы перейдем к пулу, давайте быстро рассмотрим, что происходит, когда ваше приложение подключается к базе данных для выполнения операции с базой данных:
- Приложение использует драйвер базы данных для открытия соединения.
- Сетевой сокет открывается для соединения приложения и базы данных.
- Пользователь аутентифицирован (имеется в виду пользователь базы данных).
- Операция завершена, и соединение может быть закрыто.
Как мы видим, открытие и закрытие соединения и сетевого сокета — это многоэтапный процесс, требующий вычислительных ресурсов. Однако если соединение не закрывать, а постоянно держать открытым, также потребляются ресурсы.
Зачем объединять подключения к базе данных?
Для простого приложения может быть достаточно обычного способа подключения к базам данных
, но когда ваше приложение получает некоторое количество пользователей, простая операция с базой данных может занять несколько секунд.
Кроме того, постоянное открытие и закрытие соединений для каждого операция с базой данных
потребляет слишком много ресурсов.
Часто имеет смысл найти способ держать соединения открытыми и передавать их от операции к операции по мере необходимости, а не открывать и закрывать совершенно новое соединение для каждой операции.
Что такое пул соединений с базой данных?
Пул соединений с базой данных – это способ снизить затраты на открытие и закрытие соединений за счет поддержки пула открытых соединений, которые при необходимости можно передавать из операции базы данных в операцию базы данных.
Как создать и настроить пулы соединений?
В качестве примера я возьму PostgreSQL и SequelizeORM для демонстрации.
Но почти все виды баз данных или ORM поддерживают пул соединений.
Ниже кода фрагмент кода содержит некоторые значения по умолчанию
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
}
max->
максимальное количество пулов клиентов может расширяться одновременно.
min ->
одновременно может расширяться минимальное количество клиентов.
acquire ->
Максимальное время (в миллисекундах), в течение которого пул будет пытаться установить соединение, прежде чем выдаст ошибку.
idle ->
Максимальное время (в миллисекундах), в течение которого соединение может бездействовать или ожидать выполнения какой-либо операции с базой данных, прежде чем будет освобождено.
Это минимальные настройки, необходимые для быстрого начала работы.
Вы всегда оглядываетесь назад и добавляете дополнительную конфигурацию в соответствии с вашими требованиями.
Спасибо за чтение.
Не стесняйтесь делиться своими мыслями в разделе комментариев.
Подпишитесь на Prodip Kumar Paul, чтобы узнать больше подобного контента.