2015-01-02 3 views
0

Предполагая, что я буду выполнять каждые 2 секунды запрос, должен ли я открывать соединение по каждому запросу или должен ли я поддерживать соединение до тех пор, пока приложение (сервер) не остановится?Должен ли я открывать соединение MySQL каждый запрос или всегда?

ответ

1

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

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

+0

Предполагая, что проекты растут, и у меня будет около 200 запросов каждую секунду? – magl1te

+0

Я не следую. Выполняете ли вы запрос каждые 2 секунды или для каждого соединения, которое в среднем происходит каждые две секунды? Это очень разные вещи. –

+0

В первом примере я выполняю 1 запрос каждые 2 секунды. Во втором примере (комментарий выше) я выполняю 200 запросов в секунду. – magl1te

Смежные вопросы