Подтвердить что ты не робот

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

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

Код:

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

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

Найдите блокировку/блокировку с помощью монитора активности Jay Shepherd.

SQL Server:

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

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

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

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

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

Проверьте, насколько занят сервер Jay Shepherd.

4b9b3361

Ответ 1

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

  • Исправить настройки тайм-аута по умолчанию для sqlcommand:

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

    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.CommandTimeout = 120

  • Увеличьте время ожидания соединения:

    Источник данных = mydatabase; Начальный каталог = совпадение; Persist Security Info = True; Идентификатор пользователя = Пользователь; Пароль = пароль; Тайм-аут соединения = 120

  • Увеличение тайм-аута транзакции в SQL Server 2005

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

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

  • Сделать код вызовом хранимой процедуры вместо написания встроенного оператора sql в коде.

Ответ 2

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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