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

Tempo di esecuzione della query in Management Studio e profiler. Cosa misura?

Se ho capito correttamente la tua domanda, stai prima mettendo in dubbio la differenza tra la Durata riportata da Profiler e le statistiche presentate in SSMS (o nell'angolo in basso a destra per il tempo generale e/o per SET STATISTICS TIME ON). In aggiunta a ciò, sembri non essere convinto del commento del DBA di produzione che la visualizzazione viene eseguita nella durata prevista di circa 60 secondi.

Innanzitutto, dalla documentazione in linea, le statistiche che SSMS riporterebbe tramite SET STATISTICS TIME ON:

"Visualizza il numero di millisecondi necessari per analizzare, compilare ed eseguire ogni istruzione."

Sei perfetto per questo. Per quanto riguarda la Durata in Profiler, è descritta come:

"La durata (in microsecondi) dell'evento."

Da dove mi siedo, questi due dovrebbero essere funzionalmente equivalenti (e, come sono sicuro che avrai notato, Profiler segnalerà in microsecondi se stai andando contro SQL 2005 o successivo). Dico questo perché l'"evento" in questo caso (per quanto riguarda la Durata in Profiler) è l'esecuzione della selezione, che include la consegna al cliente; questo è coerente in entrambi i casi.

Sembra che tu sospetti che la geografia sia il colpevole della lunga durata durante l'esecuzione della query in remoto. Questo potrebbe benissimo essere. Puoi verificarlo eseguendo la selezione nella vista in una finestra di query, quindi generando un'altra finestra di query e rivedendo il tipo di attesa sulla query:

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;

Sospetterei che vedresti qualcosa come ASYNC_NETWORK_IO come tipo di attesa se la geografia è il problema, altrimenti, controlla cosa ne deriva. Se stai profilando la query della tua esecuzione remota, la Durata rifletterà le statistiche temporali che vedi in SSMS. TUTTAVIA, se stai usando Profiler e scopri che la durata di questa query quando eseguita da uno dei server web che si trova nello stesso data center di SQL Server impiega ancora 7 minuti, quindi il DBA è un grosso bugiardo :). Userei Profiler per registrare le query che richiedono più di 1 minuto, provare a filtrare la tua visualizzazione e prendere la media per vedere se sei in linea con il rendimento.

Poiché non ci sono altre risposte pubblicate, sono preoccupato di essere lontano dalla base qui, ma è tardi e sono nuovo a questo, quindi ho pensato di provarlo!