Чи впливає профілер SQL на продуктивність сервера?


11

Я зіткнувся з проблемою, коли сервер sql 2008 не дає високого навантаження. Мені потрібно знайти цей випадок завантаження і потрібно оптимізувати код, щоб він міг обробляти навантаження. В Інтернеті я виявив, що SQL-профілер може використовуватися для відстеження взаємодій з базами даних, які згодом можна проаналізувати, щоб знайти точну точку, де виникає проблема. Я також з’ясував, як ми можемо запустити sql-профайлер. Але тепер у мене запитання полягає в тому, що, запускаючи профайлер sql, я збираюся вплинути на продуктивність сервера?


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

3
Подовжені заходи можуть бути більш легким варіантом.
Мартін Сміт

Відповіді:


10

Профілер SQL Server - це графічний інтерфейс, який використовує трасування SQL Server через клієнтську сторону. Завдяки такому характеру, так, ви можете потенційно помітити слабкий до серйозного впливу на продуктивність залежно від навколишнього середовища.

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


+1 навіть дуже короткий слід профілера, залежно від багатьох факторів, може калічити сервер.
Аарон Бертран

3

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


Мій сервер і база даних встановлені на одній машині. Тепер, якщо я запускаю профайлер sql через "Microsoft SQL management studio -> Tools-> SQL profiler", то скільки погіршення продуктивності я можу очікувати, і на основі яких факторів?

Він заснований на тому, наскільки зайнятий ваш сервер, скільки подій і скільки стовпців складається ваш слід та фільтрування. Фільтрація може впливати в обох напрямках - в один спосіб вона може зменшити кількість рядків, які повертаються в інтерфейс користувача (частина, яка дійсно завдає профілеві шкоди більше ніж трасування на стороні сервера), але з іншого боку, якщо у вас погано вибрано фільтр (наприклад textdata LIKE '%foo%'), він може мати протилежний ефект. Занадто багато змінних, щоб забезпечити якесь магічне очікування, вам просто доведеться спробувати. Ви дійсно повинні використовувати трасування на стороні сервера.
Аарон Бертран

Спробуйте це посилання, якщо ви не маєте доступу до оригіналу.
Марк Лопес

3

Все, що сказали попередні плакати, є правильним. Profiler - це програма, яка в один момент використовувала DMO і тепер використовує SMO для зйомки подій сліду. Це додає величезну кількість накладних витрат порівняно з просто використанням трасування на стороні сервера.

SMO - це API, який додає додатковий "рівень" процесу відстеження разом із клієнтською програмою Profiler. Сторінка траси сервера буде читати події відстеження безпосередньо з черги транзакцій, отримані накладні витрати яких незначні.

Мені вдалося запустити сліди на сервері в середовищах SQL Server, які обробляють 10 000+ транзакцій в секунду. Використання Profiler у тих самих середовищах поставить екземпляр бази даних на коліна. У будь-якому виробничому середовищі, якщо вам потрібно простежити активність бази даних, завжди використовуйте трасування на стороні сервера. Профілер знищить екземпляр бази даних.


2

Так, Profiler SQL Server впливає на продуктивність.

Під час відстеження за допомогою графічного інтерфейсу всі події синхронно обробляються та фільтруються, тому такі фактори, як завантаження сервера, затримка в мережі, які події ви збираєте, і навіть там, де зберігаються зібрані події, все сприяють накладним витратам.

Як показали інші відповіді, краще використовувати трасування на стороні сервера замість GUI. Однак цей метод застарілий , а замість нього слід використовувати розширені події . (Примітка. Навіть використовуючи розширені події, які легші, ніж слід, все-таки можна додати небажану кількість навантаження на сервер - див. Список у другому абзаці, щоб думати, як мінімізувати накладні витрати під час налаштування події сесія.)

Що стосується сильно завантаженого сервера, вам потрібно бути дуже уважним щодо збирається інформації, оскільки сам процес вимірювання може вплинути на проблему, що досліджується.


0

Профілер SQL Server працює у два етапи: спочатку ви скажете йому, щоб він записував усі запити. Тоді ви виконуєте кілька типових транзакцій (або просто нехай це входить у виробництво). Це створює "пробне навантаження". Потім ви робите фактичне профілювання (аналіз) за допомогою тестового навантаження.

Ведення журналу не дуже дороге, особливо порівняно з вартістю самих запитів.


Мій сервер і база даних встановлені на одній машині. Тепер, якщо я запускаю профайлер sql через "Майстерню SQL для управління SQL -> Інструменти-> Програміст SQL", то скільки погіршення продуктивності я можу очікувати, і на основі яких факторів?
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.