ADO.NET пул соединений и SQLServer

  • Что это?
  • Как реализовать пул соединений с MS SQL?
  • Каковы последствия производительности, когда
    • Выполнять много запросов один за другим (то есть, используя цикл с 30K + итерациями, вызывающими хранимую процедуру)?
    • Выполнение нескольких запросов, которые занимают много времени (более 10 минут)?
  • Есть ли лучшие практики?
12.08.2008 20:48:30
4 ОТВЕТА
РЕШЕНИЕ

Пул соединений - это механизм для повторного использования соединений, так как установка нового соединения медленная.

Если вы используете строку подключения MSSQL и System.Data.SqlClient, то вы уже используете ее - в .Net это все время скрыто.

Цикл из 30 тыс. Итераций может быть лучше в качестве курсора на стороне сервера (ищите операторы курсора T-SQL), в зависимости от того, что вы делаете с каждым шагом за пределами sproc.

Длинные запросы - это хорошо, но будьте осторожны, вызывая их с веб-страниц, так как Asp.Net на самом деле не оптимизирован для длительного ожидания, и некоторые соединения будут отключены.

3
12.08.2008 20:53:40

Немного больше информации о пуле соединений ... вы уже используете его с SqlClient, но только если ваша строка соединения идентична для каждого нового соединения, которое вы открываете. Насколько я понимаю, каркас будет пул соединений автоматически, когда это возможно, но если строка соединения меняется даже незначительно от одного соединения к другому, то новое соединение не будет исходить из пула - оно создается заново (так что это дороже ).

Вы можете использовать приложение Performance Monitor с XP / Vista для наблюдения за соединениями SQL, и вы очень быстро увидите, используется ли пул или нет. Посмотрите на категорию «.NET CLR Data» в системном мониторе.

2
12.08.2008 21:07:35

Я второй Кит; если вы вызываете хранимую процедуру 30000 раз, у вас гораздо большие проблемы, чем пул соединений.

0
12.08.2008 21:13:21

Эта тема также частично ответила на эту тему . Поиск показал бы это .. Определение Пулы соединений, из которых Google ответил бы с первым хитом быть это ..

Что оставило бы только лучшие практики, что, я думаю, было бы хорошим вопросом :)

+1 к ответу Кита . Он ударил гвоздь прямо в голову.

Просто вежливое напоминание из FAQ:

Вы искали в интернете, прежде чем задать свой вопрос, и вы пришли к нам, вооруженные исследованиями и информацией о вашем вопросе ... верно?

-3
23.05.2017 10:32:50