← Hyperdrive (Postgres & MySQL) / hyperdrive / concepts
Пул подключений
Hyperdrive поддерживает пул соединений с вашей базой данных. Эти соединения размещаются оптимальным образом, чтобы свести к минимуму задержку для ваших приложений. Вы можете настроить количество соединений, которые ваша конфигурация Hyperdrive использует для подключения к исходной базе данных. Это позволяет подобрать оптимальный размер пула соединений с учётом возможностей базы данных и требований приложения.
Например, если ваш Worker отправляет много запросов к базе данных (которые не могут быть обработаны кешированием Hyperdrive), имеет смысл разрешить Hyperdrive устанавливать больше подключений к базе данных. И наоборот, если ваш Worker отправляет мало запросов, которым действительно нужно достигать базы данных, либо база данных допускает лишь небольшое количество подключений, вы можете уменьшить число подключений, которые Hyperdrive будет устанавливать к вашей базе данных.
Все конфигурации используют минимум 5 подключений, а максимум зависит от вашего плана Workers. См. раздел ограничения для получения подробностей.
Как Hyperdrive объединяет соединения с базой данных в пул
Hyperdrive автоматически масштабирует количество открытых подключений к базе данных в зависимости от вашего трафика и нагрузки на базу данных.
max_size параметр действует как мягкое ограничение: Hyperdrive может временно создавать дополнительные соединения при сетевых проблемах или в периоды высокой нагрузки, чтобы обеспечить высокую доступность и отказоустойчивость.
Перезапустите пул подключений
Hyperdrive сам управляет пулом соединений, включая автоматическое обнаружение большинства отказов базы данных и восстановление после них. В редких случаях пул может потребоваться перезапустить вручную, в экстренном порядке: например, после отказа базы данных, если Hyperdrive ещё не успел переключить соединения на новый основной узел.
Чтобы перезапустить, выберите свою конфигурацию Hyperdrive в дашборде Cloudflare и перейдите в Настройки вкладку и выберите Перезапустить в разделе Danger zone. Для перезапуска потребуется Hyperdrive Admin роль.
При перезапуске существующий пул подключений опустошается, и Hyperdrive устанавливает новые подключения к исходной базе данных. После перезапуска Настройки вкладка показывает, когда конфигурация была последний раз перезапущена вручную.
Режим пула подключений
Пул соединений Hyperdrive работает в режиме транзакций: клиент, выполняющий запрос, использует одно соединение на протяжении всей транзакции. По завершении транзакции соединение возвращается в пул.
Hyperdrive поддерживает SET инструкции ↗ на время транзакции или запроса. Например, если вы вручную создаете транзакцию с помощью BEGIN/COMMIT, SET инструкции внутри транзакции вступят в силу. Кроме того, запрос, содержащий SET команда (SET X; SELECT foo FROM bar;) также применит SET команда. Когда соединение возвращается в пул, оно RESET так, чтобы SET команды не будут применяться к последующим запросам.
Это означает, что в рамках одного вызова Worker может быть открыто несколько подключений для операций с базой данных и может потребоваться SET никаких конфигураций для каждого запроса или транзакции. Не рекомендуется оборачивать несколько операций с базой данных в одну транзакцию, чтобы сохранить SET состоянии. Это повлияет на производительность и масштабирование Hyperdrive, поскольку на время транзакции соединение не может быть повторно использовано другими изолятами Worker.
Hyperdrive поддерживает именованные подготовленные выражения (prepared statements), реализованные в postgres.js и node-postgres драйверов. В других драйверах именованные подготовленные выражения могут работать медленнее или не поддерживаться вовсе.
Рекомендации
Количество подключений можно настроить в панели управления Cloudflare или через Cloudflare API. Чтобы определить подходящий лимит для вашего сценария использования, учитывайте следующие рекомендации:
- Начните с осторожных значений: Начните с меньшего количества подключений и увеличивайте его по мере необходимости в зависимости от производительности приложения.
- Отслеживание метрик базы данных: Отслеживайте использование подключений и показатели производительности базы данных, чтобы оптимизировать количество подключений.
- Учитывайте ограничения базы данных: Убедитесь, что настроенное количество подключений не превышает максимальный лимит подключений вашей базы данных.
- Учитывайте наличие нескольких конфигураций: Если несколько конфигураций Hyperdrive подключаются к одной и той же базе данных, учитывайте суммарное количество подключений по всем конфигурациям.
Следующие шаги
- Подробнее о Как работает Hyperdrive.
- Проверьте Ограничения Hyperdrive для вашего тарифного плана Workers.
- Узнайте, как Подключение к PostgreSQL из Hyperdrive.