SSMS
 sql >> база данни >  >> Database Tools >> SSMS

Време за изпълнение на заявка в Management Studio &Profiler. Какво измерва?

Ако разбирам правилно въпроса ви, първо поставяте под въпрос разликата между продължителността, отчетена от Profiler, и статистическите данни, представени в SSMS (или в долния десен ъгъл за общо време и/или чрез SET STATISTICS TIME ON). В допълнение към това изглежда не сте убедени в коментара на производствения DBA, че изгледът се изпълнява в очакваната продължителност от ~60 секунди.

Първо, от Books Online, статистиките, които SSMS ще докладва обратно чрез SET STATISTICS TIME ON:

"Показва броя милисекунди, необходими за синтактичен анализ, компилиране и изпълнение на всяко изявление."

Ти си на място за това. Що се отнася до продължителността в Profiler, тя е описана като:

„Продължителността (в микросекунди) на събитието.“

От мястото, където седя, тези две трябва да са функционално еквивалентни (и, както съм сигурен, че сте забелязали, Profiler ще докладва за микросекунди, ако се противопоставяте на SQL 2005 или по-нова версия). Казвам това, защото "събитието" в този случай (относно Duration in Profiler) е изпълнението на избора, което включва доставка до клиента; това е последователно и в двата случая.

Изглежда, че подозирате, че географията е виновникът за дългата продължителност при изпълнение на заявката от разстояние. Това може да бъде много добре. Можете да тествате за това, като изпълните избора на изгледа в един прозорец на заявка, след което създадете друг прозорец на заявка и прегледате типа на чакане в заявката:

select
    a.session_id
    ,a.start_time
    ,a.status
    ,a.command
    ,db_name(a.database_id) as database_name
    ,a.blocking_session_id
    ,a.wait_type
    ,a.wait_time
    ,a.cpu_time
    ,a.total_elapsed_time
    ,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

Подозирам, че ще видите нещо като ASYNC_NETWORK_IO като тип на изчакване, ако проблемът е географията - в противен случай вижте какво се получава от това. Ако профилирате заявката на вашето отдалечено изпълнение, продължителността ще отразява статистическите данни за времето, които виждате в SSMS. ОБАЧЕ, ако използвате Profiler и установите, че продължителността на тази заявка когато се изпълнява от един от уеб сървърите който се намира в същия център за данни като SQL Server все още отнема 7 минути, тогава DBA е голям, дебел лъжец :). Бих използвал Profiler, за да записвам заявки, които отнемат повече от 1 минута, да се опитам да филтрирам за вашия изглед и да взема средната стойност, за да видя дали сте на целта за ефективност.

Тъй като няма публикувани други отговори, притеснявам се, че съм далеч от базата тук - но е късно и съм нов в това, така че реших да го пробвам!



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Нямате разрешение да използвате грешката в израза за групово зареждане

  2. SSMS:Автоматично запазване на множество набори от резултати от един и същ SQL скрипт в отделни раздели в Excel?

  3. Как да използвате git като доставчик на контрол на източника за SQL Server Management Studio

  4. Как да извлечете данни от SQL Server въз основа на примера по-долу?

  5. Как да превключите от SSMS към dbForge Studio без усилие