Я не уверен, в каком контексте вы используете свои соединения, но я могу поделиться тем, что, кажется, работает для меня.
Я использую SQL-сервер в качестве моей задней части и использую для этого комбинацию кеширования для повышения производительности. Моя практика заключается в том, чтобы открыть соединение только в том случае, если оно мне действительно нужно, и не объединять соединения, чтобы они сразу очищались, и я могу видеть в мониторе активности SQL точно, что является активным, а что нет. Каждое соединение занимает память, поэтому приятно держать его в скучном реве, когда они не нужны.
Прежде чем я отвечу на вопрос об открытии и закрытии соединения, позвольте мне сказать, что кеширование действительно важно. Получение объекта из кеша позволит вам сэкономить массу времени. В некоторых моих приложениях asp.net, когда кеширование включено в dev, я обнаружил, что я едва могу измерить задержку, тогда как при вызове БД может потребоваться от 15 мс до 45 мс для завершения вызова, и это даже не рассмотрение другой задержки факторов или нагрузки. Другой метод, который я использую, является хорошей структурой объектов для моих данных, поэтому я только делаю обновление БД, если что-то меняется. Я реализовал некоторые методы на своем объекте o убедитесь, что я делаю как можно меньше IO.
Это, как говорится, мы все знаем, что нам нужно, чтобы получить доступ и писать в нашу БД в какой-то момент, так что я следовать двум принципам:
держать двери и окна закрытыми, чтобы сэкономить на энергии. Открытое соединение в одном месте означает, что оно недоступно в другом (или память и другие ресурсы более ограничены).Мы превратили пул, потому что это привело к повышению производительности для нас.
Я делаю так много в партии или сразу, как только могу, когда соединение открыто. Это немного сложнее, поэтому позвольте мне объяснить.
- Один из методов, который я использовал, заключается в передаче объектов соединения по трубе, чтобы все объекты могли использовать один объект соединения. Это приводит к тому, что одно соединение открыто и закрыто, а не 10 или более, в зависимости от вашего приложения. Хорошим примером этого является одна из наших моделей покупки, которая использует возможности SQL-сервера для сбора статистики и хеширования сложных шаблонов заказов. Не имеет смысла продолжать открывать и закрывать соединение, когда вы делаете поиск 200K + DB или независимо от приложений. Другая часть этого заключается в том, что когда я использую объект, я пытаюсь связать свои обновления, чтобы сократить время, в течение которого я держу соединение открытым. Таким образом, делая scope_identity в вызове вставки, позвольте мне позаботиться о моей вставке и поиске уникального идентификатора для добавления к моему объекту до его кеширования. В тот день, когда я впервые разрабатывал приложения asp, я действительно открыл соединение, как только страница начала загружаться, а затем закрыла его. Я больше не рекомендую это делать. Теперь в день есть большая выгода для этих видов абстракций и слоев, которые я бы рекомендовал любому начинающему программисту обратить пристальное внимание.
Мои два цента:
кэша данных! Кэш ваших данных! Кэш ваших данных! Сделайте как можно меньше доступа к БД, если вы не можете кэшировать и затем кэшировать свои данные!