Що таке "Вихід з аудиту" в SQL Server Profiler?


91

Я запускаю імпорт даних (за допомогою C # / Linq), і, природно, намагаюся максимально оптимізувати свої запити. З цією метою я запускаю трасування в БД, використовуючи SQL Server Profiler, з моїм трасуванням, відфільтрованим моїм іменем для входу в SQL (це ім'я, яке можна однозначно віднести до мого процесу імпорту даних).

Як не дивно, але більшість моїх операторів SQL дуже швидкі :) - дуже мало запитів навіть перебиває позначку 1 мс. Але між усіма моїми запитами розташовано кілька рядків, де EventClass - це «Вхід в аудит» або «Вихід з аудиту» - і тривалість «Виходу з аудиту» може становити до хвилини!

Чи пов’язано це з тим, що я використовую транзакції під час імпорту? Якщо так, чи є спосіб знайти, які найвищі запити, щоб я міг їх очистити?



Відповіді:


81

Якщо я правильно пам’ятаю, тривалість виходу з аудиту - це кількість часу, коли з’єднання було відкрито. Наприклад, нічого спільного зі швидкістю команди - просто кількість часу, коли логін був «увійшов».


9
Цікаво, дякую! Але чому тоді кількість прочитань така висока (~ 400 000), коли кількість читань для запитів між "логіном" і "виходом" становить лише 56?
Shaul Behr

Це кількість мс від входу до виходу. Не фактична кількість разів запитів в межах використовуваного підключення. 400 000 мс - це приблизно 7 хвилин. Подивіться на центральний процесор, читає та записує стовпці, щоб спробувати знайти запити з високим рівнем використання центрального процесора та / або диска - як зниження продуктивності.
Thies

Вибачте, ви маєте на увазі Readsвідповіді на вимірювання часу?
Johnny_D

1
Значення "Зчитування" виходу здається дуже високим для мене, враховуючи, що існує лише одна операція з 3 зчитуваннями, перерахованими між нею та входом.
Трійко

1
Слід зазначити, що Readsстовпець не представляє рядки, що повертаються запитами, але # логічного диска читає. Запит, який навіть нічого не повертає, може просканувати всю таблицю з 1 мільйона записів, шукаючи нічого, що можна повернути, що призведе до дуже великої кількості прочитань. Отже, кількість читань насправді не може бути природно корельована з кількістю запитів.
Темп

12

Події входу / виходу пов'язані з налаштуванням / знесенням. IIRC - це час, який був «зареєстрований на час», на відміну від тривалості обробки, як і в інших подіях журналу.

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

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


Чи можна більш детально перевірити це "налаштування / знос"? Будь ласка, перегляньте наступне відповідне питання: stackoverflow.com/questions/44920375/…
Стефан

3

Клас події Audit Logout вказує на те, що користувач вийшов із системи (вийшов із системи) Microsoft SQL Server. Події в цьому класі запускаються за допомогою нових з'єднань або з'єднань, які повторно використовуються з пулу з'єднань.

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

Для отримання додаткової інформації я пропоную https://msdn.microsoft.com/en-us/library/ms175827.aspx :)


1
Ви впевнені, що події виходу з аудиту запускаються при повторному використанні з'єднань із пулу з'єднань? Я думав, що пули з'єднань є прикладом того, чому ви можете спостерігати високу тривалість виходу з аудиту, тому що з'єднання відкрите, але простоює протягом більшої частини свого життя,
Адам Гудвін,

2

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

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