На мой взгляд, вы должны открыть соединение в начале действия пользователя и закрыть его в конце. Это не окажет существенного влияния на производительность, поскольку подключение выполняется так же быстро, как и выполнение одного запроса.
Однако, если вы открываете / закрываете соединение для каждой подоперации, вы можете получить низкую производительность. Будьте уверены, что вы этого не делаете.
Основная мотивация для использования нового соединения каждый раз, что вы можете избежать следующих классов ошибок:
- «Утренние» ошибки, когда база данных исчезала или отключалась через некоторое время (или время ожидания на брандмауэрах с сохранением состояния и т. Д.)
- Ошибки «Stale state», когда какое-то предыдущее действие оставляло соединение в «разорванном» состоянии и приводило к сбою следующего действия или неожиданному поведению (например, «SET names koi8»)
Можно сбросить соединение mysql, выполнив mysql_change_user (если ваш API его поддерживает), но это почти то же самое, что и переподключение (просто используется то же самое соединение tcp).