Поделиться через


Оптимизация SQL Trace

Выполнение SQL Trace негативно сказывается на производительности, поскольку этот процесс использует системные ресурсы для сбора данных, однако существует несколько способов минимизировать потери производительности. Чтобы минимизировать потери производительности, вызванные трассировкой:

  • Рассмотрите возможность использования командной строки для запуска трассировок. Использование графического пользовательского интерфейса уменьшает производительность. Дополнительные сведения см. в разделе Хранимая процедура sp_trace_create (Transact-SQL).

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

  • Настройте трассировку на сбор только тех событий, которые содержат нужные данные. Например, если трассировка должна определить взаимоблокировки, включите в нее класс событий Lock:Deadlock, а не Lock:Acquired. Если включить в трассировку оба класса событий, она будет отвечать на каждую полученную блокировку и производительность снизится в два раза.

  • Старайтесь не собирать дублирующиеся данные. Например, собирая SQL:BatchStarted и SQL:BatchCompleted, можно минимизировать размер результирующего набора, выбрав только текстовые данные для класса событий SQL:BatchStarted.

  • Используйте фильтры в определении трассировки. Например, если известно, что определенный пользователь страдает от низкой производительности во время нерегламентированных запросов, создайте фильтр для LoginName. Настройте фильтр так, чтобы включались только события, в которых LoginName совпадает с именем пользователя.

Если необходимо запустить трассировку для событий, которая повлечет за собой серьезное снижение производительности, попробуйте следующие способы ограничения влияния на производительность сервера:

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

  • Ограничьте размер результатов трассировки. Можно ограничить размер результатов трассировки до максимального размера файла. Такая стратегия гарантирует, что потери производительности прекратятся, когда будет достигнуто ограничение по размеру файла (если не включена операция переключения на файл продолжения).

  • Ограничьте число возвращаемых событий. В Приложение SQL Server Profiler можно ограничить число возвращаемых событий, сохранив трассировку в таблицу с установленным максимальным числом строк. Результаты трассировки продолжают возвращаться на экран Приложение SQL Server Profiler после достижения максимального числа строк, но при этом можно избежать затрат производительности на запись результатов.

См. также

Основные понятия