Postupy: Poradce výkonu aplikací se serverem SQL

Překlady článku Překlady článku
ID článku: 224587 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

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:
  1. Otevřete SQL Profiler.
  2. V nabídce Nástroje klepněte na tlačítko Možnosti.
  3. Zkontrolujte vybrané možnosti Všechny sloupce dat a Všechny třídy událostí.
  4. Klepněte na tlačítko OK.
  5. Vytvořit nové trasování.
  6. V nabídce soubor přejděte na příkaz Nový a potom klepněte na tlačítko Najít.
  7. Na kartě Obecné zadejte název trasování a sběr dat do souboru.
  8. Na kartě události přidat následující typy událostí vaše trasování:

    Zmenšit tuto tabulkuRozšířit tuto tabulku
    NadpisPřidání událostiPOPIS
    KurzoryCursorPrepareTato 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 StatistikaTato 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.PozornostTato událost označuje, že byl odeslán signál pozornost klientem.
    Misc.Automatické UpdateStatsTato událost označuje, zda byla spuštěna možnost Automatické aktualizace statistiky.
    Misc.Exec připraveny SQLTato 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 SQLTato 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 SQLTato událost označuje, že ODBC, OLE DB nebo DB-Library aplikace unprepared Transact-SQL příkaz nebo příkazy pro použití.
    SessionsPřipojitTato událost označuje provedené nové připojení.
    SessionsOdpojitTato událost označuje, že klient odpojil.
    SessionsExistující připojeníTato událost označuje, že připojení existoval při spuštění trasování SQL Profiler.
    Uložené proceduryAktualizace SP: dokončenoTato událost označuje, kdy uložené procedury dokončila spuštění.
    Uložené proceduryAktualizace SP: překompilovatTato událost označuje, že byl během provádění recompiled uložené procedury.
    Uložené proceduryAktualizace SP: počátečníTato událost označuje, že uložené procedury byl spuštěn při spuštění.
    Uložené proceduryAktualizace SP: StmtCompletedTato událost označuje, kdy výkazu v uložené proceduře dokončila spuštění.
    TSQL:SQL:BatchCompletedTato událost označuje, že dokončen dávkový Transact-SQL. Sloupci text zobrazuje příkaz byl proveden.
    TSQL:SQL:StmtCompletedTato událost označuje příkazu Transact-SQL dokončena. Sloupci text zobrazuje příkaz byl proveden.
    TSQL:RPC: dokončenoTato událost označuje dokončení volání vzdálené procedury (RPC).
  9. 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:BatchStartingTato událost označuje zahájení dávkové Transact-SQL. Sloupci text zobrazí právě prováděný příkaz.
    TSQL:SQL:StmtStartingTato 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é proceduryAktualizace SP: StmtStartingTato 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í
  10. 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:
  1. Spustit sledování výkonu WINDOWSNT.
  2. V nabídce Zobrazit klepněte na tlačítko protokol.
  3. V nabídce Možnosti klepněte na tlačítko protokol.
  4. Zadejte název souboru a umístění chcete protokolovat čítače výkonu. Můžete upravit podle potřeby interval aktualizace.
  5. V nabídce Úpravy klepněte na tlačítko Přidat do protokolu.
  6. Přidat všechny objekty. Windows NT a serveru SQL objekty.
  7. 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:
150934Jak 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:
251004INF: Jak monitor blokování SQL Server 7.0

Spuštění aplikace typické zatížení

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

  1. 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:
    224453INF: Princip a řešení SQL Server 7.0 nebo 2000 blokující problémy
  2. 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:
    243586INF: Odstraňování uložená procedura Recompilation


    Pozornost

    Signál pozornost označuje, že dotaz byl zrušen klientem. Toto je obvykle z jedné dvě příčiny:

    Uživatel výslovně zrušen dotazu nebo ukončení aplikace.

    Nebo

    Byl překročen časový limit dotazu.

    Pokud signály pozornost, může to znamenat pomalu spuštění některých dotazů.

    Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
    243589Postupy: 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:
    243588Postupy: Poradce výkonu dotazy ad-Hoc

    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:
    243589Postupy: 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:
    243589Postupy: 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:
    243588Postupy: Poradce výkonu dotazy ad-Hoc
    Prozkoumejte zbývající sloupce dat:

    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ěď.
  3. 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.

Vlastnosti

ID článku: 224587 - Poslední aktualizace: 26. října 2007 - Revize: 4.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 7.0 Standard Edition
Klíčová slova: 
kbmt kbproductlink kbhowtomaster kbhowto kbinfo KB224587 KbMtcs
Strojově přeložený článek
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.
Projděte si také anglickou verzi článku:224587

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com