У меня есть сайт asp.net mvc, который запускает несколько запросов для каждой страницы. Должен ли я открыть одно соединение или открыть и закрыть соединение для каждого запроса?Какова оптимальная стратегия подключения базы данных
ответ
Это действительно не имеет значения. Когда вы используете ADO.NET (который включает Linq to SQL, NHibernate и любой другой ORM), библиотека использует пул соединений. Вы можете «закрыть» и «повторно открыть» логическое соединение дюжину раз, но то же самое физическое соединение будет оставаться открытым все время. Поэтому не беспокойтесь о том, открыта или закрыта связь.
Вместо этого вы должны пытаться ограничить количество запросов, которые должны выполняться на странице, потому что каждое путешествие в оба конца несет значительные накладные расходы. Если вы показываете одни и те же данные на каждой странице, кешируйте результаты и настраиваете зависимость или истечение срока действия кеша, если она изменяется редко. Также попробуйте повторно использовать данные запроса, используя соответствующие объединения и/или загружаемую загрузку (если вы используете ORM, который ленивы).
Даже если данные будут всегда отличаться друг от друга при каждой загрузке страницы, вы получите более высокую производительность, используя единую хранимую процедуру, которая возвращает несколько наборов результатов, чем вы, выполнив каждый запрос отдельно.
Итог: Забудьте о стратегии подключения и начните беспокоиться о стратегии запроса. Более 3-5 запросов на страницу, и вы можете столкнуться с серьезными проблемами.
Если вы уверены, что транзакции будут быстро завершены, используйте одно соединение.
Обязательно проверьте все результаты возврата и оберните все в порядке исключения, где это возможно.
Чтобы избежать ненужных накладных расходов, лучше использовать одно соединение. Но обязательно запустите запросы в блоке «try» и закройте соединения в блоке «finally», чтобы не зависнуть от соединений.
Или использовать оператор 'using' –
UnitOfWork ?? это отличная стратегия для использования. nhibernate и многие другие используют этот шаблон.
дать ему Google для конкретных деталей, имеющих отношение к вашим потребностям ..
Джима
Если вы выполняете несколько запросов на странице в обычном ADO.NET, они запускаются последовательно, а объединение пулов означает, что это не имеет значения. Лучшей практикой является открытие соединений по требованию и их немедленное закрытие - даже для нескольких запросов на одной странице. Пул соединений делает это довольно эффективным.
Когда вы используете несколько запросов, производительность может значительно улучшиться, одновременно открыв несколько подключений и используя асинхронный ADO, чтобы гарантировать, что все запросы будут выполняться одновременно в нескольких потоках. В этом случае вам нужно соединение для каждого запроса. Но общее время соединения будет уменьшено.
Существует также потенциал использования MARS в одном соединении, но я не являюсь большим сторонником этого, и он намного более ограничен в функциональности.
- 1. Какова оптимальная стратегия индексации для таблицы отношений?
- 2. Оптимальная стратегия хранения Riak
- 3. Оптимальная стратегия пути поиска
- 4. Оптимальная стратегия писсуара
- 5. Оптимальная структура базы данных
- 6. Оптимальная заполняемость базы данных?
- 7. Стратегия обрезки базы данных
- 8. Оптимальная стратегия индекса Neo4j для многоточечных узлов
- 9. Оптимальная стратегия Игра для создания SOS
- 10. Оптимальная стратегия выбора пар из списка комбинаций
- 11. Оптимальная стратегия для игры с монетами
- 12. Log4net - оптимальная стратегия при использовании наследования
- 13. Оптимальная структура базы данных для MicroStrategy
- 14. Оптимальная модель базы данных для многоязычных сайтов
- 15. SQL Оптимальная структура базы данных: данные NOAA
- 16. стратегия базы данных для обеспечения аналитики данных
- 17. Какова оптимальная конструкция DB для этого типа данных
- 18. Какова оптимальная длина для адреса электронной почты в базе данных?
- 19. Строка подключения базы данных
- 20. Пул подключения базы данных
- 21. Оптимальная стратегия индексирования для многоязычных требований с использованием solr
- 22. Какова оптимальная настройка сжатия GZIP для IIS?
- 23. Какова оптимальная конструкция алгоритма для водосберегающего писсуара?
- 24. Какова оптимальная длина соли для пароля пользователя?
- 25. Какова оптимальная настройка для Azure Traffic Monitor?
- 26. Какова лучшая стратегия для модульных тестов, управляемых базами данных?
- 27. Лучшая стратегия для первоначального заполнения базы данных базы данных Grails
- 28. Пользовательские объекты данных - какова лучшая стратегия хранения данных?
- 29. Какова лучшая стратегия хранения данных журнала в базе данных?
- 30. Какова будет структура базы данных?
@ должен ли я просто хранить объект кешированного соединения – leora