Персистентные соединения с БД - да или нет?

Это работает:

Iterator<Integer> iter = l.iterator();
while (iter.hasNext()) {
    if (iter.next().intValue() == 5) {
        iter.remove();
    }
}

Я предположил, что поскольку цикл foreach является синтаксическим сахаром для итерации, использование итератора не помогло бы ... но оно дает вам эту функциональность .remove().

46
задан Brian Warshaw 13 September 2012 в 10:52
поделиться

6 ответов

Вы могли использовать это в качестве грубого "ruleset":

ДА , используйте постоянные соединения, если:

  • существует только немного приложений/пользователей, получающих доступ к базе данных, т.е. Вы не будете приводить к 200 открытым (но вероятно бездействовать), соединения, потому что существует 200 различных пользователей, совместно использованных на том же хосте.
  • база данных работает на другом сервере, к которому Вы получаете доступ по сети
  • (одна) доступы к приложению база данных очень часто

НИКАКОЙ , не используйте постоянные соединения, если:

  • Ваше приложение только должно получить доступ к базе данных 100 раз в час.
  • у Вас есть много веб-серверов, получающих доступ к одному серверу базы данных
  • , Вы используете Apache в режиме перед ветвлением. Это использует одно соединение для каждого дочернего процесса, который может подъем справедливо быстро. (через @Powerlord в комментариях)

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

проблема с то есть, что в "конфигурации по умолчанию", MySQL только позволяет 1 000 параллельных "открытых каналов". После этого новым соединениям отказывают (Можно настроить эту установку). Таким образом, если Вы имеете - говорят - 20 веб-серверов с каждым 100 Клиентов на них, и у каждых из них есть всего доступ на одну страницу в час, простая математика покажет Вам необходимость в параллельных соединениях 2000 года с базой данных. Это не будет работать.

Следовательно: Только используйте его для приложений с большим количеством запросов.

63
ответ дан BlaM 26 November 2019 в 20:29
поделиться

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

4
ответ дан Josh Hinman 26 November 2019 в 20:29
поделиться

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

Maggie Nelson Объективно Ориентированный отправленный об этом в августе и Robert Swarthout сделал сопроводительное сообщение с некоторыми твердыми числами. Оба - довольно хорошие чтения.

3
ответ дан Mike H 26 November 2019 в 20:29
поделиться

По моему скромному мнению:

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

99% времени единственное non-persistant соединение, которое умирает в конце выполнения страницы, будет работать просто великолепно.

другой 1% времени, Вы, вероятно, не должны использовать PHP для приложения, и нет никакого идеального решения для Вас.

0
ответ дан Markus 26 November 2019 в 20:29
поделиться

Я собирался задать этот тот же вопрос, а скорее, чем задают тот же вопрос снова, я просто добавлю некоторую информацию, которую я нашел.

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

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

0
ответ дан ejunker 26 November 2019 в 20:29
поделиться

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

0
ответ дан dkretz 26 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: