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

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

Код:

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

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

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

SQL Server:

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

Остерегайтесь динамического увеличения базы данных Martin Clarke .

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

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

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

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

Ответы [ 8 ]

5 голосов
/ 16 сентября 2008

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

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

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

    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.CommandTimeout = 120

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

    Источник данных = mydatabase; Исходный каталог = Соответствие; Информация о сохраняемой безопасности = True; Идентификатор пользователя = Пользователь; Пароль = пароль; Время ожидания подключения = 120

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

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

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

  5. Заставить код вызывать хранимую процедуру вместо записи встроенного SQL-оператора в коде.

3 голосов
/ 16 сентября 2008

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

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

2 голосов
/ 16 сентября 2008

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

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

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

1 голос
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

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

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

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

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