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

Просто следите за тем, как я это сделал и почему:

  1. Я больше не наследую класс Rule из MonoBehaviour, чтобы избежать отслеживания создания и удаления объектов gameObjects, которая оказалась болью.
  2. Поскольку метод Invoke не существует в родовых классах, я заменил его отражением, как описано здесь здесь

12
задан 9 revs, 2 users 39% 23 May 2017 в 10:33
поделиться

8 ответов

В прошлом некоторые мои решения были:

  1. Установите время по умолчанию настройки sqlcommand:

    Тусклый myCommand Как Новый SqlCommand (" [dbo]. [spSetUserPreferences]", myConnection)

    myCommand. CommandType = CommandType. StoredProcedure

    myCommand. CommandTimeout = 120

  2. Строка тайм-аута соединения увеличения:

    Данные Source=mydatabase; начальный Catalog=Match; сохраните безопасность Info=True; пользователь ID=User; Password=password; соединение Timeout=120

  3. Временной лимит транзакции увеличения в SQL-сервере 2005

    В Инструментах студии управления> Опция> Увеличение Разработчиков “Временной лимит транзакции после”: даже если “Значение тайм-аута строки подключения переопределения для разработчика таблицы обновляет” проверенный/снятый флажок.

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

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

5
ответ дан 2 December 2019 в 22:07
поделиться

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

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

3
ответ дан 2 December 2019 в 22:07
поделиться

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

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

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

2
ответ дан 2 December 2019 в 22:07
поделиться

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

1
ответ дан 2 December 2019 в 22:07
поделиться

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

  • Проверьте использование Процессора сервера, чтобы видеть, слишком ли это просто занято
  • Ищите блокирование/блокировку продолжения монитора Действия
  • Сетевые проблемы/производительность
0
ответ дан 2 December 2019 в 22:07
поделиться

Выполненный Профилировщик для измерения времени выполнения запросов.
Проверьте приложение, регистрирующееся на любые мертвые блокировки.

0
ответ дан 2 December 2019 в 22:07
поделиться

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

0
ответ дан 2 December 2019 в 22:07
поделиться

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

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

0
ответ дан 2 December 2019 в 22:07
поделиться