Використання SQL Profiler у базі даних, яка вже виробляється


28

Як розробник я використовую SQL Profiler досить часто. Це хороший інструмент налагодження, як відстежувати, що робить мій код, так і аналізувати проблеми з продуктивністю.

Але я завжди використовував це в моєму середовищі розвитку , причому дуже контрольованим чином.

  • Запустіть мою заявку та переведіть її у певний стан
  • Почніть слід на профілері
  • Виконайте певну послідовність дій у моїй заяві
  • Зупиніть слід і вивчіть результати.

Чи можна практично використовувати SQL Profiler у виробничому середовищі?

Моє перше занепокоєння - це призведе до погіршення продуктивності.

Моє друге занепокоєння полягає в тому, що оскільки у виробництві ви самі не викликаєте цікавих дій. Вам доведеться залишити профайлер тривалим періодом, а потім проаналізувати результати. Чи став би набір результатів занадто непростим? (Займаючи занадто багато місця на диску і занадто важко запитуючи).

Хтось використовує SQL Profiler у виробництві?


1
Якщо ви знаєте, що шукаєте, то, можливо, вам навіть не знадобиться відстеження, наприклад, dba.stackexchange.com/questions/756/…
Гай

Відповіді:


19

Використання профіля сервера Sql (інструмент графічного інтерфейсу) для відстеження виробничого сервера не є хорошою ідеєю. Але це залежить від навантаження. Використовуйте замість нього серверне трасування sql (див. Процедури sp_trace_XXX ) замість нього. Також я знайшов статті:

Вплив на ефективність: відстеження Profiler та SQL відстеження на стороні сервера ,

Автоматизація відстеження на стороні сервера в SQL Server

Уникайте виникнення проблем з Profiler

можливо, це буде цікаво і корисно.

Book Online говорить:

  • Запускайте Profiler віддалено, а не безпосередньо на сервері
  • Уникайте включення подій, які часто трапляються (наприклад, блокування: придбано), якщо це абсолютно не потрібно
  • Включіть лише необхідні класи подій
  • Вкажіть обмежуючі фільтри, щоб зменшити кількість подій
  • Уникайте зайвих даних (наприклад, SQL: BatchStarting та SQL: BatchCompleted)
  • Уникайте появи великих слідів за допомогою Profiler; замість цього слід розглядати SQL Trace на стороні сервера
  • Обмежте розмір файлу трасування на стороні сервера та керуйте використанням простору

1
Щоб звести до мінімуму фільтр впливу, можна найкраще відстежувати файл до команд sp_trace. Графічний інтерфейс, що працює віддалено, спричинить найбільший вплив, але ви можете використовувати його, щоб легко генерувати сценарій зі всіма своїми фільтрами, які ви можете швидко змінити, щоб замість них перейти у файли. Встановіть належним чином # файлів та розмір файлу.
AndrewSQL

21

Я використовую SQL Profiler проти виробництва весь час. При правильному виконанні (фільтруючи таким чином, щоб ви повернули дуже невеликий обсяг даних) проти сервера, ризик мінімальний. Відстежувати все було б марно.


7
  1. Так, акт моніторингу вимагатиме певних ресурсів. Запуск його на перевантаженому сервері може вбити його.

  2. Ви насправді будете стежити за реальним навантаженням життя: ваші дії можуть загубитися від шуму цього навантаження.

Ми інколи запускаємо його на виробництві. В основному з текстовим фільтром для конкретного коду або з фільтрами процесора / тривалості, щоб захопити більш тривалі запити. І ми не намагаємося зафіксувати плани виконання XML чи якусь подібну відсутність

Ключове значення - знати, що ви шукаєте: ми не схильні залишати це все і захоплювати все.

У такому випадку, якщо ви хочете побачити результати деяких дій, чи можете ви зробити це за кілька годин?


2

Профілер завжди буде впливати на продуктивність.

Якщо ви використовуєте SQL Server 2008R2 +, ви можете використовувати розширені події. Це забезпечує велику частину інформації, яку ви бачите в профайлері, частиною хіта на продуктивність.

Книга в Інтернеті http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

Ця функція отримала велике оновлення в SQL Server 2012, яке тепер включає графічний інтерфейс у SSMS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.