sql >> Databasteknik >  >> Database Tools >> SSMS

Frågekörningstid i Management Studio &profiler. Vad mäter det?

Om jag förstår din fråga rätt, ifrågasätter du först skillnaden mellan varaktigheten som rapporterats av Profiler och statistiken som presenteras i SSMS (antingen i det nedre högra hörnet för allmän tid och/eller genom att sätta STATISTIK TID PÅ). Utöver det verkar du inte vara övertygad om produktions-DBA:s kommentar att vyn körs under den förväntade varaktigheten av ~60 sekunder.

Först, från Books Online, statistiken som SSMS skulle rapportera tillbaka via SET STATISTICS TIME ON:

"Visar antalet millisekunder som krävs för att tolka, kompilera och köra varje sats."

Du är perfekt för detta. När det gäller Duration i Profiler beskrivs den som:

"Händelsens längd (i mikrosekunder)."

Från där jag sitter borde dessa två vara funktionellt likvärdiga (och, som jag är säker på att du har märkt, kommer Profiler att rapportera på mikrosekunder om du går emot SQL 2005 eller senare). Jag säger detta eftersom "händelsen" i det här fallet (avseende Duration i Profiler) är utförandet av urvalet, vilket inkluderar leverans till klienten; detta är konsekvent i båda fallen.

Det verkar som om du misstänker att geografi är boven till den långa varaktigheten när du kör frågan på distans. Detta kan mycket väl vara. Du kan testa detta genom att utföra valet på vyn i ett frågefönster och sedan skapa ett annat frågefönster och granska väntetypen på frågan:

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;

Jag skulle misstänka att du skulle se något som ASYNC_NETWORK_IO som väntetypen om geografi är problemet - annars, kolla in vad som kommer av detta. Om du profilerar frågan för din fjärrexekvering, kommer varaktigheten att återspegla den tidsstatistik du ser i SSMS. MEN, om du använder Profiler och upptäcker att längden på denna fråga när den körs från en av webbservrarna som sitter i samma datacenter som SQL Servern tar fortfarande 7 minuter, då är DBA en stor, fet lögnare :). Jag skulle använda Profiler för att registrera frågor som tar längre tid än 1 minut, försök att filtrera efter din vy och ta genomsnittet för att se om du är i mål för prestanda.

Eftersom det inte finns några andra svar, är jag orolig att jag är långt borta från basen här - men det är sent och jag är ny på det här så jag tänkte prova det!



  1. Konvertera SSMS .rpt-utdatafil till .txt/.csv

  2. Observera:Konvertering av array till sträng - PHP &mySQL

  3. Lägger till begränsningar i phpMyAdmin

  4. Hur ställer jag in egenskapen Allow Nulls i tabelldesignern för SSMS så att den alltid är falsk?