#sql-server #database #oracle #database-connection #connection-pooling
#sql-server #База данных #Oracle #база данных-подключение #объединение в пул соединений
Вопрос:
Я наткнулся на приведенный ниже текст, читая о свойствах пула подключений к базе данных:
maximum pool size
Свойство определяет максимальное количество доступных и заимствованных (используемых) подключений, которые поддерживает пул. Если заимствовано максимальное количество подключений, никакие подключения не будут доступны до тех пор, пока соединение не будет возвращено в пул. Это свойство позволяет увеличивать количество подключений в пуле по мере увеличения спроса. В то же время свойство гарантирует, что пул не увеличится до такой степени, exhausting a system's resources,
что в конечном итоге повлияет на производительность и доступность приложения.
Мой вопрос: Когда в приведенном выше тексте говорится о ‘ exhausting system resources
‘, означает ли это снижение производительности базы данных? Если ответ положительный, почему базы данных не имеют максимального предела подключения, который они могут выдержать без ущерба для производительности, вместо того, чтобы полагаться на приложения в определении надлежащего максимального предела подключения? Есть ли что-нибудь в базе данных, что говорит о том, сколько одновременных подключений она может поддерживать (скажем, для Oracle / SQL Server?)
Ответ №1:
В общем, беспокойство по поводу «исчерпания системных ресурсов» относится как к серверу приложений, так и к серверу базы данных. Чем больше подключений к базе данных вы разрешаете, тем больше одновременных сеансов выполняется на сервере (ах) приложений, тем больше оперативной памяти требуется виртуальной машине сервера (ОВ) приложений, тем больше требований предъявляется к процессорам на серверах приложений и базах данных и т.д. Если очередь невыполненной работы становится слишком большой, вы можете обнаружить, что тратите больше времени на включение и выключение процессов в процессоре и планирование задач, чем на выполнение полезной работы. Максимальный размер пула подключений позволяет вам немного более изящно справиться с лавиной трафика или неожиданным узким местом производительности за счет быстрого устранения ошибок вместо того, чтобы давать пользователям тайм-аут в ожидании ответов, которые никогда не придут.
Базы данных, как правило, имеют возможность ограничить количество поддерживаемых ими подключений. Например, Oracle имеет параметры PROCESSES
и SESSIONS
и поддерживает несколько архитектур подключений (выделенный сервер и общий сервер), что позволяет снизить производительность и потребление ресурсов для увеличения числа одновременных подключений, которые может поддерживать база данных.
Комментарии:
1. 1 Дополнительно рассмотрите ситуацию, когда у вас есть несколько серверов приложений, обращающихся к одной и той же базе данных (максимальное количество подключений к базе данных должно быть не менее максимального размера пула всех серверов приложений вместе взятых) или ситуацию, когда вы можете «ограничить» размер пула приложений специально, чтобы придать больший приоритет другим сеансам базы данных.