Является ли пул соединений с БД настолько важным? - PullRequest
2 голосов
/ 16 февраля 2011

В мире Java достаточно стандартно для серверов приложений объединять "дорогие" ресурсы, такие как соединения с БД. С другой стороны, в динамических языках большинство стеков имеют мало общего с объединенными ресурсами, особенно с соединениями с БД.

например. для популярной комбинации PHP + MySQL я редко видел, чтобы она использовалась с постоянным соединением, которое можно рассматривать как соединения с плохим соединением.

Если концепция объединения пулов БД не так широко реализована, значит ли это, что прирост производительности / масштабируемости может быть не таким уж важным в реальных развертываниях?

Ответы [ 4 ]

3 голосов
/ 17 февраля 2011

Основная причина создания пула соединений - это издержки при установлении соединения в первом случае.Я видел, как в прошлом это занимало до 0,5 секунд.

В условиях высокой транзакции способность сохранять соединение открытым и отправлять несколько запросов по соединению, один за другим, значительно экономит.Следовательно, вы можете не увидеть выигрыши в базе данных с низким уровнем транзакций, но ваше приложение не будет масштабироваться также, если вы игнорируете этот полезный шаблон.гораздо понятнее.

0 голосов
/ 29 марта 2011

Мое общее мнение заключается в том, что пулы соединений обычно не используются в средах, где скорость не считается такой важной, как другие проблемы. Например, AOLServer использует динамический язык (Tcl), но обладает высокой производительностью и использует пулы соединений.

0 голосов
/ 17 февраля 2011

Часто используется опрос подключений, поскольку некоторые поставщики баз данных ограничивают количество подключений к конкретной базе данных в зависимости от вашей лицензии.Базы данных с открытым исходным кодом не имеют таких ограничений, потому что они бесплатны.Таким образом, для MySQL это не является большой проблемой.

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

Проблема с постоянными соединениями заключается в том, что они никогда не закрываются, пока не прекратятся процессы клиента.Клиентские процессы в действительности являются процессами веб-сервера, обрабатывающими запросы PHP.Таким образом, если вы настраиваете свой веб-сервер на ограничение количества одновременных запросов, вы также ограничиваете количество открытых постоянных соединений с базой данных.Вы можете сделать это в Apache, установив для параметра MaxClients разумное значение, которое не исчерпывает ОЗУ вашего сервера.

Кстати, было бы также разумно переместить весь статический контент (CSS, JavaScript, изображения и т. Д.)..) к отдельному многопоточному веб-серверу (Nginx, lighttpd и т. д.), поэтому одновременный доступ пользователей не делает ваш Apache разветвленным для многих процессов.

0 голосов
/ 17 февраля 2011

Если концепция пула БД связи не так широко это означает, что может повысить производительность / масштабируемость не все, что важно, в развертывания в реальной жизни?

Это просто означает, что нет встроенного пула соединений для PHP. Это не значит, что вы не можете использовать его, например, с Postgres вы можете использовать PGPool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...