Контрольный список для устранения проблем времени ожидания приложений .NET с SQL Server и улучшения времени выполнения

Контрольный список для сокращения времени выполнения между кодом .NET и SQL Server. Приветствуется все, от простых до странных решений.

Код:

Измените время ожидания по умолчанию в команде и соединении с помощью среднее тело.

Используйте вызовы хранимых процедур вместо встроенного оператора sql с помощью среднее тело.

Ищите блокировку/блокировку с помощью монитора активности по Джей Шеперд.

SQL-сервер:

Следите за перехватом параметров в хранимых процедурах с помощью AlexCuse.

Остерегайтесь динамического увеличения базы данных с помощью Мартин Кларк.

Используйте Profiler, чтобы найти любые запросы/хранимые процедуры, занимающие более 100 миллисекунд, с помощью BradO.

Увеличьте время ожидания транзакции на среднее тело.

Преобразуйте динамические хранимые процедуры в статические с помощью среднее тело.

Проверьте, насколько занят сервер, с помощью Джей Шеперд.


person Community    schedule 15.09.2008    source источник


Ответы (8)


В прошлом некоторые из моих решений были:

  1. Исправьте настройки времени ожидания по умолчанию для команды sql:

    Dim myCommand As New SqlCommand("[dbo].[spSetUserPreferences]", myConnection)

    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.CommandTimeout = 120

  2. Увеличьте строку времени ожидания соединения:

    Источник данных=mydatabase;Исходный каталог=Match;Persist Security Info=True;ID пользователя=User;Password=password;Время ожидания подключения=120

  3. Увеличьте время ожидания транзакции в sql-server 2005

    В разделе «Инструменты» > «Параметры» > «Дизайнеры» студии управления увеличьте «Тайм-аут транзакции после:», даже если «Переопределить значение тайм-аута строки подключения для обновлений конструктора таблиц» установлен/снят.

  4. Преобразование динамических хранимых процедур в статические

  5. Заставьте код вызывать хранимую процедуру вместо того, чтобы писать встроенный оператор sql в коде.

person avgbody    schedule 15.09.2008

Странное «решение» для жалоб на долгое время отклика — иметь более интересный индикатор выполнения. То есть работать над чувствами пользователя. Одним из примеров является значок ожидания Windows Vista. Этот быстро вращающийся круг дает ощущение, что все идет быстрее. Google использует тот же трюк на Android (по крайней мере, в той версии, которую я видел).

Тем не менее, я предлагаю сначала попытаться решить техническую проблему и работать над человеческим поведением только тогда, когда у вас нет выбора.

person Asaf R    schedule 15.09.2008

Вы используете хранимые процедуры? Если это так, вам следует остерегаться прослушивания параметров. В некоторых ситуациях это может привести к очень длительным запросам. Немного чтения:

http://blogs.msdn.com/queryoptteam/archive/2006/03/31/565991.aspx

http://blogs.msdn.com/khen1234/archive/2005/06/02/424228.aspx

person AlexCuse    schedule 16.09.2008

Прежде всего - проверьте фактически выполняемый запрос. Я использую SQL Server Profiler при настройке через свою программу и проверяю, что все мои запросы используют правильные соединения и ссылаются на ключи, когда это возможно.

person dpollock    schedule 15.09.2008

Несколько быстрых...

  • Проверьте использование процессором сервера, чтобы увидеть, не слишком ли он занят.
  • Ищите блокировку / блокировку с помощью монитора активности.
  • Проблемы с сетью/производительность
person Jay Shepherd    schedule 15.09.2008

Запустите Profiler, чтобы измерить время выполнения ваших запросов.
Проверьте журнал приложений на наличие взаимоблокировок.

person Rob Gray    schedule 15.09.2008

Странный вариант, применимый к SQL Server 2000, который может применяться и сегодня:

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

person Martin Clarke    schedule 15.09.2008

Мне также нравится использовать SQL Server Profiler. Мне нравится настраивать трассировку на клиентском сайте на их сервере базы данных в течение хорошего 15-30-минутного отрезка времени в середине рабочего дня и регистрировать все запросы/сохраненные процессы продолжительностью> 100 миллисекунд. В любом случае, это мои критерии для "долгосрочных" запросов.

person Brad Osterloo    schedule 15.09.2008