sql >> Databáze >  >> Database Tools >> SSMS

Doba provádění dotazu v Management Studio &Profiler. co to měří?

Pokud správně rozumím vaší otázce, ptáte se nejprve na rozdíl mezi Trváním hlášeným Profilerem a statistikami prezentovanými v SSMS (buď v pravém dolním rohu pro obecný čas a/nebo SET STATISTICS TIME ON). Kromě toho se zdá, že nejste přesvědčeni o poznámce produkčního DBA, že zobrazení se spouští v očekávané délce ~60 sekund.

Za prvé, z Books Online, statika, kterou SSMS hlásí prostřednictvím SET STATISTICS TIME ON:

"Zobrazuje počet milisekund potřebných k analýze, kompilaci a provedení každého příkazu."

V tomhle jste na místě. Pokud jde o trvání v Profileru, je popsáno takto:

"Trvání (v mikrosekundách) události."

Z místa, kde sedím, by tyto dva měly být funkčně ekvivalentní (a, jak jsem si jist, že jste si všimli, Profiler bude hlásit v mikrosekundách, pokud jdete proti SQL 2005 nebo novějšímu). Říkám to proto, že "událostí" je v tomto případě (pokud jde o Duration v Profileru) provedení výběru, které zahrnuje doručení klientovi; to je v obou případech konzistentní.

Zdá se, že máte podezření, že viníkem dlouhého trvání při vzdáleném provádění dotazu je geografie. To velmi dobře může být. Můžete to otestovat provedením výběru na zobrazení v jednom okně dotazu, poté vytvořením dalšího okna dotazu a kontrolou typu čekání v dotazu:

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;

Domnívám se, že pokud je problémem geografie, uvidíte jako typ čekání něco jako ASYNC_NETWORK_IO - jinak se podívejte, co z toho vyplývá. Pokud vytváříte profil dotazu vašeho vzdáleného spuštění, bude Trvání odrážet časové statistiky, které vidíte v SSMS. OVŠEM, pokud používáte Profiler a zjistíte, že trvání tohoto dotazu při spuštění z jednoho z webových serverů který sedí ve stejném datovém centru jako SQL Server, stále trvá 7 minut, pak je DBA velký, tlustý lhář :). Použil bych Profiler k zaznamenávání dotazů, které trvají déle než 1 minutu, zkusil bych filtrovat podle vašeho zobrazení a vzít průměr, abych zjistil, zda jste na cílovém výkonu.

Protože nejsou zveřejněny žádné další odpovědi, obávám se, že jsem tady hodně mimo základnu – ale je pozdě a jsem v tom nový, tak jsem si řekl, že to zkusím!



  1. mysql - dotaz uvnitř dotazu

  2. vyberte z mysql db s 300 tabulkami pomocí výchozí předpony

  3. Zkombinujte výběr 1 nejlepších příkazů SQL

  4. Sekce pracovního stolu se nezobrazuje v jmeter Apache