INTEGRITY Документация

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

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. Чтобы определить подходящий лимит для вашего сценария использования, учитывайте следующие рекомендации:

Следующие шаги