SQL Profiler rieši problémy.

SQL Server 2005 profiler, sledovanie požiadaviek aplikácie, šablóny sledovania, zoskupovanie informácií o požiadavkách

Jedným z najužitočnejších prostriedkov na monitorovanie aktivity používateľov je profilovač (profilovač). Pomocou tohto nástroja môžete zistiť, aké príkazy SQL Server práve vykonáva. Potreba použiť profiler vzniká veľmi často. Tu je niekoľko štandardných situácií, v ktorých môže byť veľmi ťažké sa bez neho zaobísť:

q Chcete analyzovať aplikáciu a zistiť, aké príkazy vykonáva na serveri. Tieto informácie môžu byť užitočné:

· pochopiť, s ktorými tabuľkami v databáze táto aplikácia pracuje pri vykonávaní určitých operácií. V podniku je veľmi často potrebné vytvárať zostavy vo forme, ktorú aplikácia neposkytuje, a vývojári zriedka poskytujú podrobné informácie o štruktúre databázy;

· zistiť, ako optimálne z hľadiska výkonu aplikácie odosielajú požiadavky na server. V praxi je pri použití profilera často možné identifikovať úplne suboptimálne dopyty, napríklad keď sa na klientovi vykonáva filtrovanie alebo triedenie údajov;

· Aby ste pochopili, ktorý príkaz Transact -SQL z aplikácie na serveri generuje chybu.

q na zhromažďovanie informácií o aktivite používateľa počas dlhého časového obdobia (môžete napríklad zhromažďovať všetky požiadavky, ktoré na server odoslala určitá aplikácia počas pracovného dňa). Zhromaždené informácie potom možno analyzovať manuálne alebo odovzdať poradcovi pre ladenie databázy na automatizovanú analýzu;

q na monitorovanie prevádzky servera v reálnom čase. Ak sa napríklad server náhle spomalí, v okne profilovača uvidíte, aké príkazy sa na ňom momentálne vykonávajú.

Profiler má mnoho nových funkcií v SQL Server 2005:

q Pridané profilovanie udalostí Integration Services. Teraz môžete použiť profiler na sledovanie postupu nových balíkov DTS;

q bolo možné zaznamenávať hodnoty počítadla z monitora systému pri zaznamenávaní informácií o vykonaní príkazu;

q Do profilovača bolo pridaných veľa nových udalostí a zdrojov informácií, ktoré možno vybrať na zápis do súboru sledovania. Definíciu toho, čo sa má zapísať do súboru sledovania, je teraz možné uložiť vo formáte XML;

q teraz je možné ukladať výsledky sledovania vo formáte XML (možnosť zápisu do formátov ANSI , OEM , UNICODE je tiež uložená);

q Môžete dokonca uložiť plány vykonávania pre príkazy Transact -SQL zachytené profilovačom vo formáte XML. Tieto plány je potom možné otvoriť v SQL Server Management Studio na ďalšiu analýzu;

q bolo možné zoskupovať udalosti priamo v okne profilovača. Zoskupovanie napríklad veľmi uľahčuje spočítať, koľkokrát bol konkrétny príkaz Transact -SQL spustený na serveri počas dňa.

Práca s profilovačom vyzerá veľmi jednoducho. Túto aplikáciu je možné spustiť z ponuky Štart| programy| Microsoft SQL Server 2005 | výkonnostné nástroje | SQL Server Profiler . Ak chcete začať, v okne profilovača, ktoré sa otvorí, v ponuke súbor(Súbor) musí byť vybraté NovýSledovať(New Trace) a pripojte sa k serveru SQL Server 2005, ktorý chcete monitorovať. Slovo "sledovanie" sa vzťahuje na reláciu, ktorá zhromažďuje informácie o prevádzke SQL Server 2005. Pred začatím zhromažďovania informácií však musíte nakonfigurovať nastavenia pre túto reláciu. Toto nastavenie sa vykonáva v okne SledovaťVlastnosti(Trace Properties), ktorá sa otvorí automaticky pred spustením relácie sledovania (obr. 11.1).

Ryža. 11.1. Nastavenie možností relácie sledovania

Na karte generál(Všeobecné) v zozname použitieašablóna(Použiť šablónu) si môžete vybrať najvhodnejšiu šablónu na zhromažďovanie informácií v rámci vašej relácie. V zásade nemôžete venovať pozornosť nastaveniam šablóny, ale manuálne definovať parametre pre zber informácií (pomocou susednej karty DianiaVýber(Vyberte udalosti)). Určenie správnej šablóny však môže ušetriť čas a vyhnúť sa chybám. Preto sa budeme podrobnejšie zaoberať šablónami.

Šablóna sa uloží do špeciálneho súboru s príponou tdf nastavenia relácie sledovania. Práca so šablónami (pridávanie nových, zmena existujúcich, import a export zostáv do iných adresárov) prebieha pomocou menu súbor| Šablóny(Súbor| Šablóny) v SQL Server Profiler . Na začiatku máte k dispozícii osem šablón:

q štandardné (predvolené)- ako už názov napovedá, táto šablóna je vhodná pre väčšinu situácií, a preto je predvolene vybratá. Umožňuje vám sledovať všetky spustené uložené procedúry a príkazy Transact -SQL;

q SP_počíta- zhromažďujú sa informácie o uložených procedúrach a funkciách spustených na vykonanie. Zároveň sú informácie v okne profilera zoradené (v terminológii profilera - zoskupené) podľa názvov uložených procedúr;

q TSQL- Zhromažďuje informácie o všetkých príkazoch Transact -SQL, ktoré sú spustené na serveri. Okrem príkazového kódu sa zaznamenávajú aj informácie o identifikátoroch používateľských procesov a čase spustenia. Typicky sa tento vzor používa na monitorovanie príkazov odoslaných na server aplikáciou;

q TSQL_trvanie- takmer to isté ako predchádzajúca šablóna, ale namiesto zaznamenávania informácií o tom, kedy bol príkaz Transact -SQL spustený, zaznamenáva čas potrebný na jeho vykonanie. Táto šablóna sa zvyčajne používa na „ručné“ monitorovanie výkonu servera;

q TSQL_zoskupené- okrem informácií o kóde príkazu Transact -SQL a čase jeho spustenia sa zaznamenávajú informácie o názve aplikácie, používateľskom účte v operačnom systéme a prihlásení používateľa, ktoré bolo použité na pripojenie. Záznamy sú zoskupené podľa prihlásenia. Tento vzor sa zvyčajne používa v situáciách, keď chcete sledovať aktivitu konkrétnej aplikácie;

q TSQL_Prehrať znova- Zaznamenajú sa najpodrobnejšie informácie o vykonaných príkazoch Transact -SQL. Potom sa tieto informácie môžu použiť na reprodukovanie zaťaženia servera s maximálnou presnosťou. Táto šablóna sa zvyčajne používa na napísanie súboru príkazov, ktoré sa potom použijú na testovanie rôznych nastavení servera z hľadiska výkonu;

q TSQL_SP- okrem zaznamenávania informácie o začiatku spustenia celej uloženej procedúry (udal SP: Začína), táto možnosť sledovania tiež zaznamenáva informácie o vykonaní každého príkazu tejto uloženej procedúry (udalosť SP:StmtStarting). Tento vzor sa zvyčajne používa na monitorovanie činnosti zložitých uložených procedúr;

q Tuning- táto šablóna je určená na zaznamenávanie informácií, ktoré sú najvhodnejšie na prenos Poradcu pre ladenie databázy. O práci s týmto nástrojom na automatizovanú analýzu a optimalizáciu výkonu bude popísané v sek. 11.5.5.

Ako už bolo spomenuté, nie je vôbec potrebné obmedzovať sa na sadu hotových šablón. Môžete použiť svoje vlastné nastavenia relácie sledovania tak, že ich nakonfigurujete na karte DianiaVýber. V tabuľke na tejto karte musíte vybrať požadované udalosti (v riadkoch) a informácie (v stĺpcoch), ktoré sa k nim budú zaznamenávať. Upozorňujeme, že v predvolenom nastavení je viditeľný iba malý zlomok dostupných riadkov a stĺpcov. Ak chcete povoliť zobrazenie všetkých riadkov a stĺpcov, musíte začiarknuť políčka šouVšetkyDiania(Zobraziť všetky udalosti) a šouVšetkystĺpci(Zobraziť všetky stĺpce).

Veľmi často sa stáva, že chcete sledovať len akcie vykonané na konkrétnej databáze, alebo konkrétnou aplikáciou, alebo konkrétnym používateľom, alebo vybrať všetky tieto podmienky súčasne. Filtre na zhromažďovanie informácií je možné nakonfigurovať kliknutím na tlačidlo StĺpecFiltre(Filtre stĺpcov). DianiaVýber. Každý stĺpec je možné nakonfigurovať tak, aby zaznamenával iba konkrétne hodnoty ( Páči sa mi to) alebo zabránenie zápisu určitých hodnôt ( Nie ako). V predvolenom nastavení je nakonfigurovaný iba jeden filter - Nie ako pre stĺpec ApplicationName. Spôsobí, že všetky udalosti SQL Server Profiler budú ignorované, to znamená všetky udalosti súvisiace so samotným procesom zberu sledovania. Tento filter radšej neodstraňujte, pretože inak môže dôjsť k pozitívnej spätnej väzbe pri nekonečnom zaznamenávaní informácií.

S ďalším tlačidlom Organizovaťstĺpci(Organizovať stĺpce), ktorý sa nachádza na karte DianiaVýber, môžete prispôsobiť poradie stĺpcov na zobrazenie alebo zaznamenanie v profileri. Venujte pozornosť sekcii skupina(Skupina) v tomto zozname. Pre tie stĺpce, ktoré sú v ňom umiestnené, sa zoskupenie vykoná automaticky. Ak do tejto sekcie vložíte iba jeden stĺpec, potom pri jeho zobrazení budete mať možnosť použiť veľmi pohodlný režim. Agregovanévyhliadka(Agregované zobrazenie) (keď sú informácie automaticky zoskupené, napríklad podľa databázy, aplikácie, používateľského mena atď., a záznamy pre požadovanú databázu, aplikáciu alebo používateľa možno rozbaliť a zbaliť).

Po výbere požadovanej šablóny alebo nastavení vlastného súboru udalostí na zaznamenávanie sa stačí vrátiť na kartu generál a nakonfigurujte niekoľko pokročilých možností relácie sledovania.

Informácie o sledovaní možno zaprotokolovať do súboru. Tento súbor je možné použiť v rôznych situáciách:

q môže byť odovzdaný ako zdroj informácií Poradca pre ladenie databázy;

q môžete znova „prehrať“ v profileri opakovaním všetkých zaznamenaných príkazov, napríklad na vyhodnotenie výkonu s rôznymi nastaveniami servera;

q môžu byť prezentované vývojárom na podporu ich nárokov na aplikáciu.

Všimnime si niekoľko bodov, ktoré súvisia so zaznamenávaním relácie sledovania do súboru:

q 5 MB, čo je predvolený limit veľkosti súboru, je veľmi málo. Pri profilovaní produkčného servera sa táto veľkosť získa v priebehu niekoľkých minút. Je pravda, že začiarkavacie políčko je predvolene začiarknuté. povoliťsúborprevrátenie(Enable file change), teda po vyplnení jedného súboru sa automaticky vytvorí druhý súbor, k názvu ktorého sa pridá číslovka 1, potom - 2 atď., ale práca s veľkým množstvom súborov nie je vždy pohodlné. Ak zhromažďujete informácie na odoslanie poradcovi pre ladenie databázy , najlepšie je nastaviť limit veľkosti súboru na 1 GB (pomocou nastaviťmaximálnesúborveľkosť(Nastaviť maximálnu veľkosť súboru). generál). Sledovanie sa zapisuje do súboru najčastejšie z pracovnej stanice správcu, takže miesto na disku bude potrebné na pracovnej stanici a nie na serveri;

q parameter serverprocesystopaúdajov(Server spracováva údaje sledovania) možno použiť na zvýšenie spoľahlivosti zaznamenávania informácií o sledovaní. V predvolenom nastavení SQL Server Profiler spracováva údaje sledovania a robí tak na počítači, na ktorom beží (nie nevyhnutne na serveri). Ak začiarknete toto políčko, server bude spracovávať informácie o sledovaní. To zaisťuje, že sa zhromažďujú všetky informácie o sledovaní (ak nie je začiarknuté políčko, niektoré informácie môžu počas špičky servera chýbať), ale zvýši sa zaťaženie servera.

Ďalšou možnosťou zápisu informácií o sledovaní je zápis do tabuľky servera SQL Server. Automaticky sa vytvorí tabuľka s požadovanou sadou stĺpcov. V tejto tabuľke môžete upraviť iba maximálny počet záznamov. Upozorňujeme, že na tejto karte je maximálny počet záznamov uvedený v tisícoch.

Posledná možnosť na karte generál- povoliťSledovaťzastaviťčas(Povoliť čas zastavenia sledovania). Môžete určiť čas, kedy sa sledovanie automaticky vypne. Zvyčajne má zmysel vypnúť sledovanie pred spustením niektorých domácich operácií, ktoré vás nezaujímajú z hľadiska protokolovania (zálohovanie, hromadné načítanie dát, spracovanie kociek OLAP atď.).

Po nakonfigurovaní všetkých parametrov sledovania môžete kliknúť na tlačidlo Bežať kartu (Spustiť). generál a spustite sledovanie (obr. 11.2).

Ryža. 11.2. Zobrazenie informácií počas relácie sledovania

Činnosť prehliadača Trace Information Viewer je pomerne jednoduchá: horná časť zobrazuje udalosti, ktoré sa vyskytnú na serveri, zatiaľ čo spodná časť poskytuje podrobné informácie (napríklad kód príkazu SQL). Tu sú niektoré z možností dostupných v tomto okne:

q ak tab Organizovaťstĺpci vo vlastnostiach šablóny ste vybrali stĺpce na zoskupenie, môžete zoskupovať záznamy podľa týchto stĺpcov v okne zobrazenia. Na tento účel slúži menu vyhliadka Bol poskytnutý príkaz (Zobraziť). zoskupenévyhliadka(skupinové zobrazenie);

q ak je na rovnakej karte vo vlastnostiach šablóny v zozname skupina bol umiestnený iba jeden stĺpec, môžete použiť ešte pohodlnejší režim zobrazenia Agregovanévyhliadka(obr. 11.3). Tento režim sa aktivuje príkazom Agregovanévyhliadka z rovnakého menu vyhliadka a umožňuje zmeniť hodnoty vo vami zvolenom stĺpci na stromové uzly, ktoré možno zbaliť a rozbaliť. Okrem toho sa počet udalostí automaticky počíta pre každý z týchto uzlov.

Ryža. 11.3. Režim zobrazenia Agregovanévyhliadka

q v profileri môžete zobraziť nielen tie udalosti, ktoré boli práve zachytené, ale aj uložené súbory a tabuľky sledovania. Okrem toho môžete otvárať bežné skripty SQL Server pomocou príkazov Transact -SQL. Informácie z týchto súborov alebo tabuliek možno použiť na prehratie zaznamenaných operácií. Na tento účel slúžia príkazy ponuky. Prehrať znova(Opakovať);

q V SQL Server 2005 Profiler bola predstavená nová funkcia – prepojenie informácií o sledovaní s počítadlami výkonu Monitora výkonu. Ak chcete využiť túto príležitosť, potrebujete:

definujte reláciu sledovania, počas ktorej sa musia zapísať informácie pre stĺpce Doba spustenia a EndTime;

· spustiť reláciu sledovania s informáciami zapísanými do súboru alebo tabuľky. Súčasne s ním zbierajte denník odpočtov meračov Performance Monitor do súboru;

otvorte zhromaždené informácie zo súboru sledovania v profileri a potom použite príkaz ImportovaťVýkonÚdaje(Importovať údaje o výkone) z ponuky súbor.

SQL Server 2005 poskytuje náhradu za profilovač. Toto sú uložené procedúry sledovania. Ich funkčnosť je takmer totožná s funkciou profilovača. Môžete napríklad tiež vybrať udalosti na sledovanie a zapísať ich do textového súboru. Hlavným rozdielom je, že všetky nastavenia sa budú musieť vykonať z kódu Transact -SQL.

Práca s uloženými procedúrami sledovania je ťažšia a menej pohodlná ako s profilerom a neposkytujú ďalšie funkcie. Preto ich nebudeme podrobne zvažovať. Uvádzame iba zoznam takýchto uložených procedúr so stručným popisom:

q sp_trace_create- umožňuje vám konfigurovať parametre relácie sledovania;

q sp_trace_setevent- umožňuje vybrať požadované udalosti pre vytvorenú reláciu sledovania;

q sp_trace_setfilter- umožňuje vám nakonfigurovať filter na zhromažďovanie informácií o sledovaní;

q sp_trace_setstatus- umožňuje spustiť sledovanie, zastaviť ho alebo vymazať vygenerovanú uloženú procedúru sp_trace_create definícia aktuálnej relácie;

q sp_trace_generateevent- umožňuje vygenerovať vlastnú udalosť, ktorá bude počas sledovania zachytená.

Softvérový produkt SQL Server Profiler je grafický shell navrhnutý na vytváranie stôp a analýzu výsledkov stôp. Udalosti sú uložené v súbore sledovania, ktorý možno potom analyzovať alebo použiť na prehratie určitých sekvencií krokov na identifikáciu problémov, ktoré sa vyskytli.

Ak chcete sledovať akcie, ktoré práve prebiehajú, musíte spustiť MS SQL Profiler, vytvoriť nové sledovanie a nakonfigurovať analýzu indikátorov:

Na karte "Všeobecné" musíte zadať názov stopy. Zadajte, kam sa zachytené údaje sledovania uložia - do súboru a/alebo do databázovej tabuľky.

Veľmi zaujímavá je karta „Vybrať udalosti“:

Na tejto stránke sú uvedené udalosti, ktoré je potrebné monitorovať. V tomto príklade zadáme údaje potrebné na sledovanie plánov dotazov.

Získajte bezplatné video lekcie 267 1C:

V predvolenom nastavení prebieha sledovanie cez všetky špecifikované udalosti vo všetkých databázach. Ak chcete použiť filtre na prijaté údaje, musíte kliknúť na tlačidlo "Filtre stĺpcov ...":

Napríklad nastavme výber podľa ID infobase (ID databázy zistíte pomocou dotazu SELECT DB_ID(N'BaseName')).

Spúšťa sa sledovanie v Profileri pre 1C

Po vykonaní všetkých nastavení zostáva začať so sledovaním, preto musíte kliknúť na „Spustiť“ (RUN). Od tohto momentu sa začnú sledovať všetky akcie špecifikované vo filtri:

Napríklad vediem trasu počas trvania dokumentu „Príjmy tovarov a služieb“, aby som mohol sledovať najnáročnejšie operácie.

Po prijatí stopy je potrebné ju analyzovať.

Analýza údajov z nástroja Profiler

Na analýzu možno výslednú stopu uložiť do súboru alebo do tabuľky. Uložíme do databázovej tabuľky:

V tejto prednáške budeme pokračovať v štúdiu uložených procedúr, ktoré sme začali v časti „Vytváranie a správa uložených procedúr“ . Dozviete sa, ako analyzovať uložené procedúry a ďalšie príkazy T-SQL pomocou Microsoft SQL Server Query Analyzer a SQL Server Profiler. Z tejto analýzy budete môcť určiť, aké efektívne sú príkazy T-SQL. Efektívny dotaz SQL Server využíva správnu postupnosť operácií a správne indexy na zníženie spracovania riadkov a minimalizáciu I/O.

Pomocou nástroja Query Analyzer môžete vidieť plán vykonávania zvolený pre príkaz T-SQL optimalizátor dotazov SQL Server. Optimalizátor dotazov je interný modul, ktorý hľadá najlepší plán vykonávania pre každý príkaz T-SQL. Optimalizátor dotazov analyzuje každý príkaz T-SQL, pozerá sa na množstvo možných realizačných plánov a vyhodnocuje „náklady“ každého plánu z hľadiska požadovaných zdrojov a času spracovania. Vyberie sa plán s najnižšími nákladmi. Náklady na každý plán sa určujú na základe dostupných štatistík, ktoré zhromažďuje systém a môžu byť zastarané. Keďže o svojej databáze a údajoch možno viete viac ako optimalizátor dotazov, potom možno budete môcť vytvoriť plán, ktorý je lepší ako optimalizátor dotazov. Pomocou informácií, ktoré poskytuje Query Analyzer , môžete určiť, či plán optimalizácie dotazov pre konkrétny príkaz bude efektívny, a ak nie, môžete sa pokúsiť optimalizovať tento príkaz jeho úpravou alebo pomocou SQL nápovedy. V tejto prednáške sa okrem používania Query Analyzer naučíte aj optimalizáciu príkazov T-SQL.

Pomocou nástroja Profiler môžete analyzovať operácie vo vašom systéme SQL Server a určiť, ktoré príkazy SQL a uložené procedúry využívajú nepotrebné systémové prostriedky. S týmito informáciami môžete najskôr zamerať svoje ladiace úsilie na tieto príkazy a uložené procedúry. Okrem toho, že táto kapitola popisuje, ako používať Profiler, vám táto kapitola tiež ukáže, ako čo najlepšie využiť informácie, ktoré získate z Profilera.

Použitie SQL Query Analyzer

Pomôcka Query Analyzer sa namiesto toho dodáva s Microsoft SQL Server 2000

Pri našej práci sa pomerne často stretávame so situáciou, kedy určitý dopyt beží pomaly a v texte dopytu nie sú viditeľné žiadne zjavné problémy. Zvyčajne je v tomto prípade potrebné preskúmať problém na hlbšej úrovni. Spravidla je potrebné pozrieť sa na text SQL dotazu a jeho plán, a tu nám pomáha SQLProfiler.

Čo je SQL Profiler a prečo je vôbec potrebný

SQLProfiler je program dodávaný so serverom MS SQL Server a je určený na prezeranie všetkých udalostí, ktoré sa vyskytnú na serveri SQL Server, alebo inými slovami na zaznamenávanie sledovania. Prečo by programátor 1C potreboval SQLProfiler? Aspoň preto, aby ste dostali text dotazu v SQL a videli jeho plán. Dá sa to samozrejme urobiť aj pomocou technologického časopisu, ale to si vyžaduje určité zručnosti a plán v TJ nie je taký krásny a čitateľný. V profileri vidíte nielen textový, ale aj grafický plán vykonávania dotazov, čo je podľa mňa oveľa pohodlnejšie. Profiler môžete použiť aj na určenie: žiadostí dlhších ako určitý čas žiadostí na konkrétnu čakaciu tabuľu, časové limity zablokovania zámkov a oveľa viac ...

Analýza dotazov pomocou SQL Profiler

Profiler sa najčastejšie používa špeciálne na analýzu dopytov. Spravidla nemusíme sledovať všetky dotazy, často potrebujeme vidieť, ako je určitý dotaz v jazyku 1C preložený do SQL, a vidieť jeho plán vykonávania. Môže to byť potrebné napríklad na určenie, prečo dopyt beží pomaly, alebo sme napísali veľký dotaz a chceme sa uistiť, že text SQL dotazu neobsahuje spojenia poddotazov. Ak chcete požiadavku zachytiť v sledovaní, postupujte takto:

1. Spustite SQL Profiler Štart - Všetky programy - Microsoft SQL Server 2008 R2 - Výkonové nástroje - SQLProfiler
2. Vytvorenie nového súboru sledovania – Vytvorenie sledovania (Ctrl+N)
3. Zadajte server DBMS, na ktorom sa nachádza naša databáza, a kliknite na „Pripojiť“.

Prirodzene, nič vám nebráni v sledovaní servera DBMS, ktorý sa nachádza na inom počítači. 4. V zobrazenom okne „Vlastnosti sledovania“ prejdite na druhú kartu „Vybrať udalosti“

5. Teraz musíte špecifikovať udalosti a vlastnosti týchto udalostí, ktoré chceme vidieť v sledovaní. Potrebujeme dotazy a plány dotazov, takže musíme povoliť príslušné udalosti. Ak chcete zobraziť úplný zoznam vlastností a udalostí, povoľte príznaky „Zobraziť všetky stĺpce“ a „Zobraziť všetky udalosti“. Ďalej musíte vybrať iba udalosti zobrazené na obrázku nižšie, všetky ostatné udalosti musia byť vypnuté.


Popis udalostí: ShowplanStatisticsProfile - plán vykonania textového dotazu.
ShowplanXMLStatisticsProfile - grafický plán vykonávania dotazov.
RPC:Completed - text požiadavky, ak sa vykoná ako procedúra (ak sa vykoná požiadavka 1C s parametrami).
SQL:BatchCompleted - text dotazu, ak sa vykoná ako normálny dotaz (ak bol dotaz 1C vykonaný bez parametrov).

6. Teraz musíte nakonfigurovať filter pre udalosti. Ak to neurobíte, uvidíme dopyty pre všetky databázy umiestnené na tomto serveri DBMS. Kliknite na tlačidlo "Filtre stĺpcov" a zadajte filter podľa názvu databázy

Teraz budeme v sledovaní vidieť iba požiadavky do databázy „TestBase_8_2.“ Ak chcete, môžete použiť filter na ďalšie polia, najzaujímavejšie z nich: Trvanie (Duration), TextData (zvyčajne ide o text požiadavky) a RowCounts (počet riadkov vrátených požiadavkou).

Napríklad, ak potrebujem zachytiť všetky požiadavky na tabuľku "_InfoRg4312" trvajúce viac ako 3 sekundy v databáze "TestBase_8_2", potom urobím:
a) Filtrujte podľa databázy, príklad uvedený vyššie
b) Filtrujte podľa trvania v milisekundách.

C) Filtrujte podľa textu požiadavky


Tu špecifikujeme masku. Ak potrebujete sledovať dopyty, ktoré pristupujú k viacerým tabuľkám, vytvorte viacero položiek v sekcii "Vyzerá ako". Podmienky všetkých filtrov spolupracujú.

7. Teraz môžete začať so sledovaním. Kliknite na "Štart", potom začne sledovanie fungovať a uvidíte tie udalosti, ktoré ste nakonfigurovali na zobrazovanie a ktoré spadajú pod vaše filtre. Na ovládanie sledovania môžete použiť tlačidlá na paneli príkazov.


Zľava doprava: Guma - vymaže okno sledovania, Štart - spustí sledovanie, Pauza - pozastaví sledovanie, stlačením Štart obnoví sledovanie, Stop - zastaví sledovanie

8. Samotné okno sledovania pozostáva z dvoch častí. Udalosti a vlastnosti udalostí sa nachádzajú v hornej časti. Spodná časť zobrazuje rôzne informácie v závislosti od typu udalostí. V našom prípade sa tu zobrazí buď text požiadavky alebo jej plán.

9. Spustite dotaz v konzole dotazu 1C a uvidíte, ako sa prejaví v profileri.


Stopa ukazuje, že žiadostí bolo niekoľko a iba jedna z nich je naša. Ostatné požiadavky sú servisné.

10. Podľa vlastností udalostí môžete pochopiť: koľko sekúnd bol dotaz vykonaný (Duration), koľko logických čítaní (Reads) bolo, koľko riadkov dotaz vrátil ako výsledok (RowCounts) atď. V mojom prípade dotaz trval 2 milisekundy, vykonal 4 logické čítania a vrátil 1 riadok.

11. Ak ideme o jednu udalosť vyššie, môžeme vidieť plán dotazov graficky.
Ako je zrejmé z plánu, vyhľadávanie sa vykonáva podľa indexu podľa ceny, hoci tento plán nemožno nazvať ideálnym, pretože. index nepokrýva, polia s kódom a názvom sa získavajú pomocou funkcie KeyLookup, ktorá zaberie 50 % času.


Pomocou kontextového menu je možné grafický plán uložiť do samostatného súboru *.SQLPlan a otvoriť v profileri na inom počítači alebo pomocou pokročilejšieho programu SQL Sentry Plan Explorer.

12. Ak pôjdeme ešte vyššie, uvidíme rovnaký plán dotazov, ale v textovej podobe. Práve tento plán sa zobrazuje v kontrolách výkonu TJ, TsUP a ďalších 1C. Na jej analýzu odporúčam použiť pokročilý textový editor so zvýrazňovaním, napríklad Notepad++.

13. Pomocou ponuky „Súbor-Uložiť ako“ je možné uložiť celú stopu v rôznych formátoch:
a) K formátu samotného profilovača, t.j. s príponou *.trc
b) Do formátu xml
c) Zo stopy môžete vytvoriť šablónu. Pozri nasledujúci odsek.
d) Sledovanie môžete uložiť ako databázovú tabuľku. Pohodlný spôsob, ak potrebujeme nájsť napríklad najpomalšiu požiadavku v celom sledovaní, alebo vybrať požiadavky podľa nejakého parametra. Súbor - Uložiť ako - Tabuľka sledovania - Vyberte server DBMS a pripojte sa k nemu Ďalej je potrebné vybrať databázu na zadanom serveri a zadať názov tabuľky, do ktorej sa bude sledovanie uložiť. Môžete vybrať existujúcu tabuľku alebo napísať nový názov a tabuľka sa potom automaticky vytvorí vo vybranej databáze.

V tomto prípade treba brať do úvahy, že Trvanie sa v tabuľke ukladá v milióntinach sekundy a pri zobrazovaní výsledku je vhodné previesť hodnotu na milisekundy. Do tabuľky je pridaný aj stĺpec RowNumber, ktorý zobrazuje číslo daného riadku v stope.

14. Ak potrebujete často používať profiler na analýzu požiadaviek, nastavenie potrebných filtrov a udalostí vás rýchlo omrzí a navyše zaberie veľa času. Na pomoc prichádzajú šablóny sledovania, kde špecifikujeme potrebné filtre a poradie stĺpcov a pri vytváraní nového sledovania potom jednoducho vyberieme túto šablónu. Pre vytvorenie šablóny použite menu Súbor - Šablóny - Nová šablóna

Na prvej karte je všetko jednoduché. Zadajte typ servera, názov šablóny a ak je to potrebné, nastavte príznak, aby sa táto šablóna používala predvolene. Na druhej karte vyberáme udalosti a nastavujeme filtre, ako už bolo uvedené vyššie. Odporúčam tiež upraviť poradie stĺpcov v sledovaní, čo šetrí čas pri analýze dopytov. Napríklad sa mi zdá pohodlnejšie použiť nasledujúce poradie.

Teraz pri vytváraní nového sledovania môžete jednoducho zadať požadovanú šablónu, potom sa na druhej karte automaticky vyplnia všetky filtre a udalosti.

Samozrejme, zďaleka nie všetky spôsoby použitia tohto úžasného nástroja sú tu uvedené, ak bude záujem publika, potom bude možné v budúcnosti doplniť zbierku článkov na túto tému.

16.05.2000 Itzik Ben-Gan

Tak ako rekonštrukcia miesta činu pomáha nájsť páchateľa, tak aj sledovanie prevádzky databázy umožňuje identifikovať úzke miesta a odstrániť ich.

Článok „Catch the Event“ v predchádzajúcom čísle časopisu popisoval architektúru systému sledovania SQL Server 7.0 a ukázal, ako graficky definovať sledovanie v SQL Profiler. Tentoraz budeme hovoriť o tom, ako znovu vytvoriť stopy pomocou SQL Profiler a ako definovať automatické spustenie prostredníctvom rozšírených uložených procedúr sledovania. S takým silným základom budete môcť odborne používať SQL Profiler a uložené procedúry na rôzne vyšetrovania, od dlhotrvajúcich dopytov až po zložité uviaznutia.

Predbežná príprava na prehrávanie stopy

Pomocou nástroja SQL Profiler môžete spätne sledovať uložené stopy na ladenie problematických aplikácií, vytvárať reálne scenáre pre testovacie prípady, ladiť databázy a ďalšie. Ak chcete znova prejsť trať, budete musieť urobiť nejaké prípravné práce. Najprv musíte definovať stopu na sledovanie konkrétnych udalostí a stĺpcov údajov, ktoré nie sú tie, ktoré vás zaujímajú. Oprava týchto dodatočných udalostí a stĺpcov zaisťuje, že všetky akcie sa budú opakovať presne tak, ako sa udiali predtým. Po druhé, mali by ste uložiť výsledky sledovania do súboru, tabuľky alebo SQL skriptu.

Každé opätovné spustenie musí zachytiť udalosti Connect, Disconnect, ExistingConnection a RPC:Starting a SQL:BatchStarting. Okrem toho pri prehrávaní backendových kurzorov API (t. j. serverových kurzorov, ktoré sú riadené funkciami kurzora API), musíte zachytiť udalosti CursorExecute, CursorOpen a CursorPrepare. Ak chcete prehrať príkazy SQL pripravené na strane servera, pridajte udalosti Exec Prepared SQL a Prepare SQL. Opakované prehrávanie bude vyžadovať stĺpce, ktoré budú obsahovať nasledujúce údaje: názov aplikácie, binárne informácie, ID pripojenia alebo ID procesu servera (SPID), ID databázy, trieda udalosti, podtrieda udalosti, názov hostiteľa, číselné informácie, názov servera, používateľské meno SQL, čas spustenia a textové informácie.

Je dôležité si uvedomiť, že pri druhom behu sa zachytené udalosti nesimulujú, vyskytujú sa znova. Preto si uvedomte, že počas počiatočného sledovania ste s najväčšou pravdepodobnosťou zmenili svoju databázu. Napríklad pri reprodukcii stopy, ktorá obsahuje príkaz INSERT, sa v tabuľke môže objaviť duplicitný kľúč. Aby ste predišli takýmto problémom, mali by ste vrátiť databázu, ak sa sledovanie prehrá na zdrojovom serveri (t. j. na serveri, na ktorom bolo spustené pôvodné sledovanie).

Ak sa opätovné spustenie vykoná na inom serveri, je dôležité zabezpečiť, aby databáza na tomto serveri bola v rovnakom stave ako databáza na pôvodnom serveri. V tomto prípade sa uistite, že používate rovnaké mená užívateľov, ich oprávnenia a identifikátory databázy, aké boli použité na zdrojovom serveri.

Používanie rovnakých identifikátorov si vyžaduje špeciálne zručnosti a skúsenosti, najmä preto, že spoločnosť Microsoft nepodporuje priamy prístup k systémovej tabuľke sysdatabases, ktorý je potrebný na zmenu identifikátorov databázy. ID databázy môžete spárovať iným spôsobom. Ak to chcete urobiť, skopírujte súbory užívateľskej databázy zo zdrojového servera na server, kde sa bude skladba prehrávať, a potom naň obnovte zálohu hlavnej databázy zo zdrojového servera. Alternatívnou metódou je obnovenie zálohy užívateľskej databázy zo zdrojového servera na server vybraný na spustenie a potom obnovenie zálohy hlavnej databázy na rovnaký server. V oboch prípadoch na serveri, kde sa prehráva skladba, budú databázové súbory umiestnené v rovnakých adresároch ako na zdrojovom serveri a tabuľky hlavného databázového systému budú obsahovať pôvodné identifikátory databázy. Aby ste sa úplne zbavili týchto problémov, stačí odstrániť stĺpec identifikátora databázy zo sledovania a nastaviť predvolenú databázu pre každého užívateľa, ktorý je zachytený v sledovaní.

Môžete tiež ovládať úroveň načasovania skriptu a rýchlosť prehrávania. Vyberte položku Nastavenia z ponuky Prehrať, aby ste vstúpili do dialógového okna Prehrať SQL Server. Parameter Úroveň synchronizácie, ktorý riadi synchronizáciu v rámci pripojenia, môže nadobúdať nasledujúce hodnoty:

Úplná synchronizácia (Úplná synchronizácia). Táto hodnota sa používa štandardne. V tomto prípade sa všetky udalosti, ktoré sa vyskytli v jednom spojení, prehrajú v pôvodnom poradí. Čiastočná synchronizácia. S touto hodnotou môžu udalosti v jednom spojení začať pred udalosťami, ktoré už boli zaznamenané v iných spojeniach. Žiadna synchronizácia. S touto hodnotou parametra môžu nastať udalosti bezprostredne po skončení predchádzajúcej udalosti v rovnakom spojení, teda bez akejkoľvek synchronizácie v rámci spojenia.

Parameter rýchlosti prehrávania, Replay Rates, možno nastaviť na jednu z nasledujúcich hodnôt:

Tak rýchlo, ako je to možné (As fast as possible). Toto je predvolená hodnota. V tomto prípade sa nasledujúca udalosť spustí hneď, ako sa skončí predchádzajúca. Udržujte interval medzi udalosťami. Táto hodnota zachováva pôvodný časový interval medzi výskytom udalostí. Udržujte vzťah k času začiatku. S touto hodnotou sa udalosti vyskytujú v rovnakých časových bodoch vzhľadom na začiatok prehrávania stopy ako v pôvodnej stope.

Organizácia prehrávania skladieb

Predpokladajme, že chcete reprodukovať stopu vykonania príkazov SQL pripravených na strane servera, čo sú príkazy Transact-SQL (T-SQL) odoslané používateľom na server prostredníctvom ADO, OLE DB alebo ODBC. SQL Server 7.0 vykonáva príkazy SQL pripravené na strane servera pomocou pseudo-uložených procedúr sp_prepare a sp_execute, ktoré sú volané klientskou aplikáciou.

Volanie sp_prepare spôsobí, že SQL Server pripraví príkazy T_SQL na vykonanie ich kompiláciou a uložením plánov vykonávania do vyrovnávacej pamäte. Keď sa zavolá sp_execute, SQL Server spustí plány uložené vo vyrovnávacej pamäti a možno to urobí viac ako raz. Každé volanie uloženej procedúry spúšťa udalosti RPC:BatchStarting, Prepare SQL a Exec Prepared SQL. Z tohto dôvodu musia byť tieto udalosti zahrnuté do definície stopy.

SQL Profiler obsahuje niekoľko vzorových definícií sledovania, ktoré možno použiť ako šablóny. To zahŕňa príklad číslo 6, "T-SQL pre prehrávanie", ktorý odkazuje na opätovné spustenie sledovania. Tento príklad je užitočný na špecifikovanie výstupu sledovania, ktorý sa generuje počas prehrávania. Ak chcete otvoriť uložený výstup sledovania na prehrávanie, vyberte položku Otvoriť z ponuky Súbor a vyberte súbor, tabuľku alebo skript SQL na uloženie informácií zhromaždených počas sledovania. Prehrávanie môžete ovládať pomocou možností uvedených v tabuľke 1. Môžu byť znázornené buď položkami ponuky Prehrať alebo tlačidlami na paneli nástrojov.

Aplikácia rozšírených uložených procedúr

Niektoré funkcie sledovania z SQL Profiler nie sú dostupné. Patrí medzi ne sledovanie, aby sa spustilo podľa plánu, spustilo sa, keď nastane špecifická udalosť alebo keď sa spustí SQL Server. Okrem toho SQL Profiler nemožno nakonfigurovať na odosielanie výsledkov sledovania do denníka aplikácie Windows NT alebo Windows 2000. Na vykonanie týchto funkcií a na poskytnutie väčšej programovej kontroly nad sledovaním môžete použiť sadu rozšírených uložených procedúr, ktoré sú súhrnne známe ako xp_trace*.

Pozrime sa na princípy používania týchto uložených procedúr pomocou príkladu spustenia sledovania sp_start_mytrace a uloženej procedúry zastavenia sledovania sp_stop_mytrace. Prvá uložená procedúra, sp_start_mytrace, definuje udalosti sledovania, stĺpce údajov, filtre a vytvára front na uchovávanie zachytených udalostí. Potom načíta udalosti z frontu a umiestni ich do systémového súboru. Procedúra sp_start_mytrace komunikuje s frontom udalostí a sleduje jeho stav prostredníctvom rukoväte celočíselného typu, ktorú procedúra vytvára počas vytvárania frontu. sp_stop_mytrace používa tento popisovač, keď potrebuje zastaviť radenie.

Sledovanie stavu deskriptora frontu nie je ľahká úloha. Aj keď existuje veľa metód na získanie jej hodnoty, najjednoduchším a najfunkčnejším spôsobom je vytvorenie tabuľky, ktorá bude zaznamenávať údaje o všetkých sledovaniach a ich frontoch, ako aj čas začiatku sledovania, identifikátor používateľa, ktorý zapol sledovanie a názov počítača, z ktorého bol spustený. Výpis 1 zobrazuje príkazy, ktoré vytvárajú tabuľku s názvom activetraces. Ak chcete zistiť, ktoré stopy sa momentálne zaznamenávajú, pozrite si túto tabuľku. Ak chcete zastaviť sledovanie, jednoducho vyhľadajte v tabuľke príslušný deskriptor frontu.

Uložená procedúra na spustenie sledovania

Poďme si prejsť tieto dve uložené procedúry, aby sme videli, ako sa sledovanie spúšťa a zastavuje. Uložená procedúra, ktorá spúšťa sledovanie, má štyri voliteľné vstupné parametre. Prvé dva, @spid_filter a @dbid_filter, vám umožňujú obmedziť informácie zhromaždené počas sledovania iba na tie, ktoré súvisia s konkrétnym serverovým procesom (identifikovaným jeho ID, SPID) a danou databázou. Ak tieto parametre nie sú nastavené, sledovanie bude zhromažďovať údaje o všetkých procesoch a databázach. Parameter @email_address umožňuje priradiť emailovú adresu, na ktorú sa budú posielať podrobné informácie o priebehu sledovania. Ak tento parameter nie je zadaný, potom sp_start_mytrace vytlačí iba informácie na obrazovku. Ak je zadaná, ale adresa je nesprávna, uložená procedúra vydá chybové hlásenie a ukončí sa. Posledný parameter, @filename, má špecifikovať názov súboru, do ktorého budú odoslané informácie zhromaždené počas sledovania. Ak tento parameter nie je zadaný, predvolené informácie sa umiestnia do súboru c:\mytraceN.trc, kde N je číslo deskriptora frontu. Táto konvencia, ktorá definuje pravidlo pre pomenovanie súborov s údajmi sledovania, vám umožňuje zachytiť niekoľko stôp súčasne bez toho, aby ste jednému z nich umožnili uzamknúť súbor a zapisovať výsledky iba pre seba.

Ak chcete otestovať spúšťač, zmeňte vlastnosti súboru:

ALTER DATABASE testdb MODIFY FILE (NAME=`testdb_dat`, MAXSIZE=30 MB)

Dostanete správu, že vlastnosti súboru boli zmenené:

Vlastnosti súboru zmenené:
Príkaz: ALTER DATABASE testdb MODIFY FILE (NAME = `testdb_dat`,
MAXIMÁLNA VEĽKOSŤ = 30 MB)
Používateľské meno NT: Gandalf
Názov aplikácie: MS SQL Query Analyzer
Používateľské meno SQL: NA
Čas: 22. 11. 2000 14:15:28

Vždy je veľmi ťažké zistiť, aké udalosti viedli k vytvoreniu patovej situácie. SQL Profiler však poskytuje špeciálne udalosti, ktoré môžu výrazne uľahčiť „vyšetrovanie“. Môžete napríklad použiť sledovanie na sledovanie výskytu udalosti Lock:Deadlock. Výskyt tejto udalosti hovorí

že nastala slepá ulička. Používateľ tak získa ID procesu servera (SPID), ID blokovanej transakcie, čas blokovania, názov aplikácie a ID používateľa. Udalosť Lock: Deadlock Chain, ktorá sa generuje vždy, keď dôjde k uzamknutiu, je mimoriadne pohodlná: umožňuje vám zistiť identifikátory procesov (SPID) a transakcie.

Môžete zaznamenať ID transakcií zapojených do zablokovania, potom zoskupiť výsledky sledovania podľa ID transakcií a analyzovať iba tieto transakcie. V inom prístupe sa výsledky sledovania odosielajú do tabuľky. Potom môžete použiť dotazy na filtrovanie podľa SPID alebo ID transakcie.

Ak chcete vygenerovať zablokovanie, vytvorte dve tabuľky, t1 a t2, z ktorých každá musí mať iba jeden celočíselný stĺpec. Do každej tabuľky zadajte jeden riadok obsahujúci hodnotu 1. Zadajte sledovanie, do ktorého sa zaznamená nasledujúca množina udalostí: Lock:Deadlock, Lock: Deadlock Chain a zodpovedajúce udalosti začiatku a konca vykonávania príkazu (RPC, SP, SQL ). Výber by sa mal vykonať v závislosti od zamýšľaného zdroja blokovania. V našom príklade potrebujeme iba udalosti SQL: StmtStarting a SQL:StmtCompleted.

Okrem predvolených stĺpcov údajov pridajte stĺpec na zachytenie ID transakcie a stĺpcov podľa vášho výberu. Nastavte filter sledovania tak, aby sa zhodoval s ID databázy, s ktorou pracujete. Potom otvorte dve serverové pripojenia z Query Analyzer. Pri prvom pripojení spustite:

ZAČAŤ AKTUALIZÁCIU TRANSAKCIE t1 SET col1 = 1

Pri pripojení 2 spustite nasledujúcu transakciu:

ZAČAŤ TRANSAKCIU
UPDATE t2 SET col1 = 1
VYBERTE * Z t1
ZATVORTE TRANSAKCIU

Nakoniec v spojení 1 vykonajte príkazy:

VYBERTE * Z t2
ZATVORTE TRANSAKCIU

Zastavte sledovanie a otvorte súbor sledovania. Vyhľadajte udalosti Lock:Deadlock Chain a zapíšte si čísla príslušných transakcií. Zoskupte výstup podľa ID transakcie a rozbaľte zodpovedajúce transakcie. Výstup bude vyzerať podobne ako na obrazovke 1.

SQL Server Enterprise Manager obsahuje sprievodcu, ktorý vám môže pomôcť nastaviť sledovania vrátane tých, ktoré sa používajú na nájdenie príčiny uviaznutia. Ak chcete použiť Sprievodcu vytvorením stopy na definovanie stopy, prihláste sa do Enterprise Manager, z ponuky Nástroje vyberte položku Sprievodcovia, potom otvorte kategóriu Správa a vyberte Sprievodcu vytvorením stopy.

Záverečná poznámka

Možnosti sledovania, ktoré poskytuje SQL Profiler, spolu s rozšírenými uloženými procedúrami sledovania dostupnými v SQL Server 7.0 vám umožňujú ladiť správanie databázy. Či už len monitorujete stav vášho prostredia SQL Servera alebo riešite problémy s výkonom aplikácií, je čas uviesť vaše znalosti do praxe.

Itzik Ben-Gan [e-mail chránený] je držiteľom certifikácií MCDBA, MCSE+I, MCSD, MCT a SQL Server MVP. Je odborným asistentom kurzov SQL Server na Hi-Tech College v Izraeli a predsedom izraelskej skupiny používateľov SQL Server.

zdieľam