У нас огромное приложение, и мы обращаемся к нашему серверу sql с нескольких сторон. Наши пользователи жалуются на проблемы с производительностью, но мы полагаем, что это не медленно. Вместо этого мы думаем, что у нас есть блокировки, из-за которых пользователи чувствуют медленную работу.
Итак, мы хотим регистрировать процессы, которые блокируют другие процессы более чем на 5 секунд. В конце записи мы хотели бы подсчитать, как часто процесс блокировал другой процесс.
Мы уже попробовали следующее:
- мы попытались найти sqls, который показывает тот же результат, что и монитор активности (без успеха)
- Мы создали файл трассировки и проанализировали этот скрипт: https://michaeljswart.com/2011/04/a-new-way-to-examine-blocked-process-reports/
- Мы включили порог заблокированного процесса (5 секунд), но я не получил никакой информации о процессе блокировки (дескриптор sql или что-то в этом роде). Я заблокировал процесс по расширенному событию
- Мы наблюдали за монитором активности, но, кажется, действительно сложно собрать полезные данные о причине коротких блоков, и мы не можем подсчитать, как часто определенный процесс блокирует
Мы ищем метод регистрации, который имеет следующую информацию:
- заблокированный SQL
- Блокировка SQL (хранимая процедура или текущий оператор в процедуре)
- Длительность блокировки
- Время
- База данных
Мы полагаем, что SQL Server Profiler не является причиной снижения производительности.