Skip to main content

Что такое пул соединений?

Пул соединений - это термин для управления соединениями пользователей, делающих запросы к базам данных. Хотя многие пользователи могут этого не замечать, когда существует большое количество пользователей, ищущих доступ к серверу приложений, на котором находится база данных, сам объем соединения может стать почти невозможным для сервера поддерживать хорошее соединение со всеми соединениями на эти времена Программная инженерия, которая обеспечивает пул соединений, позволяет серверу хорошо управлять соединениями независимо от большого количества соединений, выполняющих запросы, и позволяет отвечать на эти запросы с долей секунды.

Соединения должны иметь одинаковую конфигурацию, чтобы быть включенными в пул соединений, поэтому большинство программ пула соединений с сервером имеют разные пулы соединений, работающие одновременно. Когда пользователь пытается подключиться, он или она назначается в пул с аналогичными конфигурациями, если пространство доступно. Если свободного места нет, запрос ставится в очередь для назначения сразу после его поступления. Пользователь может не знать, что он или она находится в очереди, но может просто заметить, что база данных кажется медленной в ответе на запрос; однако в бэк-офисе систем управления базами данных выполняется сканирование пулов, чтобы найти место для пользователя, чтобы найти открытое соединение. Большинство программ пула подключений имеют заданный список максимальных пользователей на пул и минимальные настройки времени, в течение которых соединение может оставаться неактивным до того, как соединение будет сброшено и доступность будет возвращена в пул.

При создании пула соединений, определенное количество объектов соединения создается и добавляется в пул. Чтобы пул считался активным, ему нужно как минимум количество объектов. Эти объекты соединения являются местами доступности, которые связывают соединение с пулом, и их можно создавать и добавлять в пул по мере необходимости до максимально допустимого значения в пуле. Поскольку пользователи удовлетворены своими запросами и отбрасывают свой объект соединения, объекты возвращаются в пул программами пула соединений для использования другим пользователем или тем же пользователем, когда он или она возвращается.

Одним из факторов, который может замедлить время отклика в пуле соединений, является так называемая фрагментация пула. Фрагментация пула обычно происходит из-за интегрированной безопасности или слишком большого количества баз данных, находящихся на существующем наборе серверов. Система управления базами данных, аутентифицирующая пользователей, а затем ставящая в очередь или назначающая их существующим объектам пула соединений, истощает память, а более жесткий дизайн системы доступа часто решает проблему слишком большого количества баз данных. Проектирование интегрированной системы безопасности программ на базе Windows во многих программах пула соединений требует, чтобы только один пользователь на базе Windows одновременно находился в пуле. Это может быть устранено путем создания большего количества пулов для размещения дополнительных запросов, требующих одновременного ответа.

Если программа пула соединений обнаружит, что пользователь простаивает в течение заданного периода времени или соединение разорвано, она вернет объект соединения в пул как недопустимый объект. Если сервер отключается во время действия соединения, соединение все равно можно отменить, даже если пул соединений не знает о разорванном соединении. Затем программы пула соединений ActiveX обычно очищают пул этих соединений при перезапуске сервера.