Tento podrobný článek popisuje řešení potíží s SQL Server s výkonem. Odstraňování potíží s výkonem zahrnuje použití řadu kroků izolovat a určit příčinu zpomalení aplikace. Možné příčiny patří:
Blokování.
Konflikty prostředků systému.
Problémy návrhu aplikace.
Konkrétní sadu dotazů nebo uložené procedury s dlouhými časy spuštění.
Tento článek popisuje, jak určit zdroj problému výkonu. Také odkazuje jiných článcích znalostní báze Microsoft Knowledge Base, které pokrývají podrobnosti problémy výkonu specifické pro další řešení potíží.
SQL Profiler
SQL Profiler je výkonný nástroj při odstraňování SQL Server 7.0 nebo novější, aplikační výkonu. SQL Profiler umožňuje snadno zachytit všechny události se vyskytují na běžném zatížení serveru a poskytuje informace o nich. Pomocí SQL Profiler ve spojení s Microsoft WINDOWSNT Performance Monitor a některé jednoduché dotazy k identifikaci zda blokování probíhá bude poskytují informace musíte mít v převážné většině výkonu problémy vyřešit.
Co chcete sledování
1. Nastavení SQL Profiler zachytit trasování. Použijte uvedený postup:
Otevřete SQL Profiler.
V nabídce Nástroje klepněte na tlačítko Možnosti.
Zkontrolujte vybrané možnosti Všechny sloupce dat a Všechny třídy událostí.
Klepněte na tlačítko OK.
Vytvořit nové trasování.
V nabídce soubor přejděte na příkaz Nový a potom klepněte na tlačítko Najít.
Na kartě Obecné zadejte název trasování a sběr dat do souboru.
Na kartě události přidat následující typy událostí vaše trasování:
Zmenšit tuto tabulkuRozšířit tuto tabulku
Nadpis
Přidání události
POPIS
Kurzory
CursorPrepare
Tato událost označuje, že byla připravena kurzoru na příkaz SQL pomocí ODBC, OLEDB nebo DB-Library.
Chyby a upozornění
Chybí sloupec Statistika
Tato událost označuje statistiky sloupce byla pravděpodobně užitečné Optimalizátor nebyly k dispozici. Sloupci text zobrazuje seznam sloupců s chybějící statistiky. Tato událost ve spojení s Různé: UpdateStats automatické událost, označuje, že možnost Automatického vytvoření Statistika byla spuštěna.
Misc.
Pozornost
Tato událost označuje, že byl odeslán signál pozornost klientem.
Misc.
Automatické UpdateStats
Tato událost označuje, zda byla spuštěna možnost Automatické aktualizace statistiky.
Misc.
Exec připraveny SQL
Tato událost označuje, že ODBC, OLE DB nebo DB-Library provedeny dříve připraveného příkazu Transact-SQL nebo příkazů.
Misc.
Plán vykonání
Tato událost zobrazuje plán stromu příkazu Transact-SQL byl proveden.
Misc.
Připravit SQL
Tato událost označuje aplikací ODBC, OLE DB nebo DB-Library připravené Transact-SQL příkaz nebo příkazy pro použití.
Misc.
Unprepare SQL
Tato událost označuje, že ODBC, OLE DB nebo DB-Library aplikace unprepared Transact-SQL příkaz nebo příkazy pro použití.
Sessions
Připojit
Tato událost označuje provedené nové připojení.
Sessions
Odpojit
Tato událost označuje, že klient odpojil.
Sessions
Existující připojení
Tato událost označuje, že připojení existoval při spuštění trasování SQL Profiler.
Uložené procedury
Aktualizace SP: dokončeno
Tato událost označuje, kdy uložené procedury dokončila spuštění.
Uložené procedury
Aktualizace SP: překompilovat
Tato událost označuje, že byl během provádění recompiled uložené procedury.
Uložené procedury
Aktualizace SP: počáteční
Tato událost označuje, že uložené procedury byl spuštěn při spuštění.
Uložené procedury
Aktualizace SP: StmtCompleted
Tato událost označuje, kdy výkazu v uložené proceduře dokončila spuštění.
TSQL:
SQL:BatchCompleted
Tato událost označuje, že dokončen dávkový Transact-SQL. Sloupci text zobrazuje příkaz byl proveden.
TSQL:
SQL:StmtCompleted
Tato událost označuje příkazu Transact-SQL dokončena. Sloupci text zobrazuje příkaz byl proveden.
TSQL:
RPC: dokončeno
Tato událost označuje dokončení volání vzdálené procedury (RPC).
Pokud aplikace přijímání chyb časového limitu, přestane reagovat (zablokuje se) nebo jiné události způsobit problém příkazy nikdy dokončete dojde, zahrnout také následující události:
Zmenšit tuto tabulkuRozšířit tuto tabulku
TSQL:
SQL:BatchStarting
Tato událost označuje zahájení dávkové Transact-SQL. Sloupci text zobrazí právě prováděný příkaz.
TSQL:
SQL:StmtStarting
Tato událost označuje počáteční příkazu Transact-SQL. Sloupci text zobrazí právě prováděný příkaz.
TSQL:
RPC: počáteční
Tato událost označuje zahájení volání vzdálené procedury (RPC).
Uložené procedury
Aktualizace SP: StmtStarting
Tato událost označuje výkazu v uložené proceduře je při spouštění spuštění.
Pomůže se ujistěte, že naleznete v prohlášení bylo časový limit došlo při provádění
Na kartě Sloupce dat zkontrolujte, zda jsou zahrnuty následující sloupce:
Pro SQL Server 2000
Čas spuštění
Čas ukončení
LoginSid
SPID
Třída události
TextData
IntegerData
BinaryData
Doba trvání
Procesor
Přečte
Zapíše
Název aplikace
NT uživatelské jméno
DBUserName
Pro SQL Server 7.0
Čas spuštění
Čas ukončení
Připojení ID
SPID
Třída události
Text
Celé číslo dat
Binární data
Doba trvání
Procesor
Přečte
Zapíše
Název aplikace
NT uživatelské jméno
Uživatelské jméno SQL
Informace o použití SQL Profiler naleznete na serveru SQL Server 7.0 a SQL Server 2000 Books Online.
2. Použití sledování výkonu k zachycení WINDOWSNT a SQL Server čítače. Použijte uvedený postup:
Spustit sledování výkonu WINDOWSNT.
V nabídce Zobrazit klepněte na tlačítko protokol.
V nabídce Možnosti klepněte na tlačítko protokol.
Zadejte název souboru a umístění chcete protokolovat čítače výkonu. Můžete upravit podle potřeby interval aktualizace.
V nabídce Úpravy klepněte na tlačítko Přidat do protokolu.
Přidat všechny objekty. Windows NT a serveru SQL objekty.
Spuštění protokolu, v nabídce Možnosti klepněte na tlačítko protokol a klepněte na tlačítko Start protokolu.
Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
Jak vytvořit protokol sledování výkonu pro odstraňování NT
3. Zaškrtněte pro blokování.
Zda blokování je vyskytují, spusťte systémovou uloženou proceduru sp_who:
exec sp_who
Tento výstup bude obsahovat sloupec blk. Prohlédněte si výstup všechny nenulové položky, které označují vyskytují blokování. Tento postup pravidelně v celé rozpětí ze spustit při výskytu zpomalení výkonu.
Poznámka: Uložená procedura je kontrola, zda blokování systém sp_who existuje. Obvykle není dostatek informací plně blokování problém vyřešit. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
V ideálním případě by je nejvhodnější zachytit SQL Profiler, sledování výkonu a blokování výstup během stejné rámce. Tento časový rámec musí zahrnovat čas, kdy výkon aplikací přechází z dobrý chybný. Kombinace tyto informace pomohou získat srozumitelnější obrázek, kde dochází zpomalení výkonu.
Interpretovat výsledky
Zkontrolujte pro blokování.
Pokud je sloupec blk ve výstupu sp_who-nula, znamená to, blokování probíhající v systému. Pokud procesy jsou blokování navzájem, procesy, které jsou blokovány může docházet delší doby provádění. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
INF: Princip a řešení SQL Server 7.0 nebo 2000 blokující problémy
Prohlédněte si výstup SQL Profiler.
Zobrazení dat SQL Profiler efektivně je mimořádně cenné v řešení potíží s výkonem. Nejdůležitější věcí realizovat je, že se nemáte prohlédněte vše jste sebrány. Být výběrové. SQL Profiler obsahuje funkce, které pomáhají efektivně zobrazit sebraná data. Na kartách Vlastnosti (v nabídce soubor klepněte na příkaz Vlastnosti) SQL Profiler umožňuje omezit data zobrazená odebráním sloupců dat nebo události, seskupení (třídění) podle sloupce dat a použití filtrů. Můžete prohledávat celou trasování nebo pouze určitý sloupec pro specifické hodnoty (v nabídce Úpravy klepněte na příkaz Najít). Můžete také uložit SQL Profiler dat tabulky serveru SQL (přejděte v nabídce soubor na příkaz Uložit jako, klepněte na tlačítko Najít tabulku) a spustit dotazy SQL proti jej.
Buďte opatrní provádí filtrování na trasování dříve uloženého souboru. Pokud se provedení těchto kroků aktivní trasování nebezpečí ztráty dat byla zachycena od spuštění trasování. Uložit aktivní trasování do souboru nebo tabulky nejprve (v nabídce soubor klepněte na příkaz Uložit jako) a potom znovu otevřete (v nabídce soubor klepněte na příkaz Otevřít) dříve, než budete pokračovat. Při práci na souboru uloženého trasování filtrování trvale neodebere data, která je právě odfiltrovány; právě nezobrazuje jej. Přidání a odebrání události a sloupce dat podle potřeby pomoci fokus hledání.
Prvním krokem v kontrole SQL Profiler trasovací soubory pro výkon případech je určit, kde dochází různé typy událostí na serveru.
Skupina trasování podle třídy událostí:
a. v nabídce soubor klepněte na tlačítko Vlastnosti.
b. na kartě Sloupce dat použít tlačítko nahoru přesunete Třídy událostí pod záhlavím skupiny a na tlačítko dolů odeberte všechny sloupce pod nadpisem skupiny.
c. klepněte na tlačítko OK.
Seskupení podle sloupce třídy událostí zobrazí, jaký typ události se vyskytují na serveru SQL a jak často. Hledat tento sloupec pro následující události:
SP:RECOMPILE
Tato událost označuje, že byl během provádění recompiled uložené procedury. Několik události překompilujte označují, že SQL Server je prostředky strávili kompilace dotazu namísto spuštění dotazu.
Další informace o odstraňování potíží předkompilací uložené procedury, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
Postupy: Poradce pomalým spuštění dotazů na serveru SQL 7.0 nebo vyšší
K identifikaci dotazu přijatých signál pozornost revidovat trasování, takže není seskupené podle libovolného sloupce dat a filtrovat systémový proces ID (SPID), která přijala (na kartě filtry nastavit SPID = x). Událost SQL:StmtStarting, SQL:BatchStarting nebo SP:StmtStarting okamžitě předcházející signál pozornost je dotaz přijatých časový limit nebo zrušit. Můžete prohledávat sloupec Třídy událostí událost upozornění snadno najít (v nabídce Úpravy klepněte na příkaz Najít).
PŘÍPRAVU SQL a EXEC PREPARED SQL
Příprava SQL událost označuje, že aplikace ODBC, OLE DB nebo DB-Library připravit příkaz Transact-SQL nebo příkazy pro použití. Událost Exec připraveny SQL označuje, že aplikace provedeny použití existujícího příkazu spustit příkaz připravit.
Porovnejte počet těchto dvou událostem. V ideálním případě by aplikace musí připravit příkaz SQL jednou a spustit několikrát. Tím optimalizace uloží náklady kompilace nový plán každém příkaz proveden. Počet událostí Exec připraveny SQL by měla být tedy mnohem větší než počet událostí Příprava SQL. Pokud počet událostí Příprava SQL je zhruba ekvivalentní počet událostí SQL připraveny Exec, může to znamenat, že aplikace není provádění vhodné použití modelu přípravu/spuštění. Je nejvhodnější, připravit příkazu bude pouze být provedeny jedním čas. Další informace o přípravě příkazy SQL v tématu "Příprava příkazů SQL" v SQL Server 7.0 Books Online.
Pokud počet událostí Exec připraveny SQL není tři k pěti časy větší než počet událostí Příprava SQL, aplikace pravděpodobně není být provádění efektivní použití modelu přípravu/spuštění. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
SQL Server 2000 nadměrné roundtrips za připravit/spuštění bude být odstraněno, proto není jako přísné poměr 3-5. Však může stále být dobré pravidlo, zkuste a opakované využití připravený plán více než jednou.
Chybí sloupec Statistika
Tato událost označuje statistické informace optimalizátor může mít použitého ke generování lepší plán dotazu nebyl k dispozici. Označuje, že dotaz nemá užitečné indexy na zapojených alespoň jednu tabulku. Mimo bez nutnosti užitečné indexu serveru SQL i nemá statistická data o sloupcích zapojených provést informovaná rozhodnutí pro plán dotazů. Výsledek je, generována plán dotazů, nemusí být optimální jeden. Pokud naleznete tyto události prohlédněte dotazu a generovat plán provádění a naleznete v následujícím článku Microsoft Knowledge Base pro kroky převzít zlepšit výkon tohoto dotazu:
Postupy: Poradce pomalým spuštění dotazů na serveru SQL 7.0 nebo vyšší
Při zobrazení události Chybějící Statistika sloupec zaměřit nejprve na ty, které nastanou v přidružení s Dlouhotrvající dotazy. Některé události mohou být generovány a s autostats vyřešeny automaticky serverem SQL a nemusí vyžadovat zásah uživatele. Proto nejlepší strategii je první fokus na dotazech s dlouhou dobu trvání, jak je uvedeno dále v tomto článku a Poznámka Pokud přidružené události Chybějící Statistika sloupce.
Pokud prohlížíte instance těchto tříd událostí, dalším krokem je určení je právě čas strávený.
Výstup trasování podle trvání skupiny:
a. v nabídce soubor klepněte na tlačítko Vlastnosti.
Na kartě Sloupce dat pomocí tlačítka nahoru přesunete trvání pod záhlavím skupiny a dolů tlačítko odeberete všechny sloupce pod nadpisem skupiny.
c. na kartě události odebrat všechny skupiny kromě TSQL a uložených procedur.
d. klepněte na tlačítko OK.
Seskupením trvání, můžete snadno zobrazit, co příkazy SQL, listy nebo postupy jsou spuštěny slowest. Je velmi důležité vypadat není pouze v době vzniklé potíže, ale také získat účaří výkon je vhodné pro porovnání. Můžete filtrovat na počáteční čas trasování rozdělit do oddílů, když byl dobrý výkon a samostatné části pro kdy byl nekvalitní výkon. Vyhledejte dotazy s nejdelší doby trvání je výkon dobrý. Tyto jsou pravděpodobně kořenové problém. Pokud snížit celkový výkon systému lze dokonce dobrý dotazů zobrazit dlouhé doby trvání jako čekající na systémové prostředky.
Pokud se malý počet dotazů s vysokou doby trvání, naleznete v následujícím článku databáze Microsoft Knowledge Base:
Postupy: Poradce pomalým spuštění dotazů na serveru SQL 7.0 nebo vyšší
Viz trvání jednotlivých dotazů je nízká, ale existují několik jejich a čítač SQL kompilace/s v nástroji Sledování výkonu je vysoké výstup (popsaná dále), naleznete v následujícím článku databáze Microsoft Knowledge Base:
Další přehled do povahu problému výkonu můžete získané pomocí zobrazení sloupce dat v data trasování. Zde jsou vhodné zvážit:
Pokud využití PROCESORU je vysoké, skupiny podle PROCESORU v tématu Jaké dotazy jsou největších uživatelům čas PROCESORU. Hledání sloupci text pro "hash" nebo "sloučení" Najít co plán provádění dotazu pomocí těchto typů spojení. Jsou další PROCESORU a paměti než spojení vnořené smyčky je obecně IO intenzivní intenzivní.
Pokud je disk IO problémové místo skupiny ve čtení a zápisy. Zobrazit pole Název aplikace, NT uživatelské jméno a Uživatelské jméno SQL pomoci izolovat zdroj dlouho běžící dotaz.
Sloupec dat celé číslo události výjimka bude označovat chyby, které byly vráceny zpět klientovi. Prohledáním číslo v SQL Server 7.0 Books Online můžete najít text chybové zprávy.
Pole ID připojení je užitečné Ujistěte se, že prohlížíte stejné relací pro konkrétní klienta. SPID nemůže zaručit, jako uživatel odpojil a nový uživatel připojen a přijaty stejné SPID.
Výhodu odvozené z těchto polí mohou lišit v závislosti na scénář, ale jejich by měl být prověřeno Pokud zřejmé polí dříve v tomto článku poskytují odpověď.
Prohlédněte si výstup sledování výkonu.
Sledování výkonu se zobrazí celkové kritické body systému. Může být SQL Server a aplikace provádíte očekávaným způsobem, ale je počítač underpowered nezahrnujících paměti či jiných prostředků. Nebo určitých čítače může znamenat potíže s způsob provádění aplikace a SQL Server. Minimálně zkontrolujte následující čítače:
Objekt: proces
Čítač: procesor
Instance: SQL Server
Objekt: procesor
Čítač: % procesoru čas
Instance: Zkontrolujte každé instance procesoru
Objekt: Fyzický disk
Čítač: Střední disků fronta délka
Instance: Každá instance fyzický disk zkontrolovat
Objekt: SQL Server: SQL Statistika
Čítač: SQL kompilace za sekundu
Hledejte trendu přes rozpětí ze z při výkonu přechodem z dobrý chybný: co nejdříve zvýšit? Je vázán PROCESORU počítače nebo vázány DISK IO? Tyto informace společně s výstupní Profiler dříve v tomto článku vám pomůže zúžit problémové oblasti. Vysoké problémy PROCESORU může znamenat velkého počtu předkompilací uložené procedury, kompilace dotazu ad-hoc nebo intenzivní použití algoritmu hash a sloučení spojení. K určení správné kurzu akce musí být zadán články odkazované výše v tomto článku. Délky fronty vysoké disku může znamenat potřebu další systémové paměti nebo zdokonalené diskový podsystém.
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.