Вы могли бы использовать это как грубое «набор правил»:
ДА, использовать постоянные соединения, если:
- Там только несколько приложений/пользователей доступ к базе данных, то есть вы не будете приводит к 200 открытым (но, вероятно, незанятым) соединениям, поскольку на одном и том же хосте 200 пользователей.
- База данных работает на другом сервере, на котором вы обращаетесь по сети
- An (один) приложение обращается к базе данных очень часто
NO, не использовать постоянные соединения, если:
- Вашему приложению требуется только получить доступ к базе данных 100 раз в час.
- У вас есть много веб-серверов, обращающихся к одному серверу базы данных
- Вы используете Apache в режиме предпродак. Он использует одно соединение для каждого дочернего процесса, которое может быстро развиваться. (через @Powerlord в комментариях)
Использование постоянных соединений происходит значительно быстрее, особенно если вы обращаетесь к базе данных по сети. Это не имеет большого значения, если база данных работает на одной машине, но она все еще немного быстрее. Однако, как говорится в названии, соединение является постоянным, т. Е. Оно остается открытым, даже если оно не используется.
Проблема в том, что в «конфигурации по умолчанию» MySQL допускает только 1000 параллельных «открытых каналов». После этого новые соединения будут отклонены (вы можете настроить эту настройку). Поэтому, если у вас есть - скажем, 20 веб-серверов с каждым 100 Клиентами на них, и каждый из них имеет только один доступ к странице в час, простая математика покажет вам, что вам потребуется 2000 параллельных подключений к базе данных. Это не сработает.
Ergo: Используйте его только для приложений с большим количеством запросов.
Кроме того, не используйте постоянные соединения, если вы используете Apache в режиме предварительного просмотра.Он использует одно соединение для каждого дочернего процесса, которое может быстро развиваться. – Powerlord 2008-11-10 19:28:49
@BlaM, я не получаю ваш последний абзац. Не поддерживает ли постоянные соединения их повторное использование (вот и все?), Поэтому вам не нужны 2000 соединений, так как они будут повторно использоваться? Или вы имеете в виду ** каждый клиент ** имеет уникальное имя пользователя? Тем не менее, не будут ли старые постоянные соединения автоматически закрываться, когда они будут сделаны, чтобы освободить место для новых соединений? – Pacerier 2015-06-25 07:01:28