Pomocou SQL Profiler (profiler). Použitie SQL Server Profiler

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“ uverejnený v predchádzajúcom čísle časopisu popisoval architektúru systému sledovania SQL Server 7.0 a ukázal, ako graficky definovať stopu 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ť scenáre v reálnom živote 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 stali 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. Na reprodukciu pripravených výkazov SQL Server Na druhej strane by mali pribudnúť aj 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ľúč. Vyhnúť sa podobné problémy, mali by ste vrátiť databázu, ak sa sledovanie prehrá na zdrojovom serveri (to znamená na serveri, ktorý pôvodne spustil 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 databázy používateľov zo zdrojového servera na server, kde sa bude skladba prehrávať, a potom na ňom obnovte zálohovanie hlavnej databázy zo zdrojového servera. Alternatívny spôsob je obnoviť zálohu databázy užívateľov zo zdrojového servera na server vybraný na spustenie a potom obnoviť zálohu 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. Výberom položky Nastavenia z ponuky Prehrať vstúpite 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 ukladá plány 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. SQL Profiler tiež nemožno nakonfigurovať na odosielanie výsledkov sledovania do denníka. Windows aplikácie NT alebo Windows 2000. Na vykonávanie týchto funkcií a poskytovanie väčšej slobody ovládanie programu traces, môžete použiť sadu rozšírených uložených procedúr pod spoločným názvom 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, údajové stĺpce, filtre a vytvára front na uchovávanie zachytených udalostí. Potom načíta udalosti z frontu a zaradí ich do systémový súbor. 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 vytvoriť tabuľku, 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 vám umožňuje priradiť e-mailovú adresu Email, do ktorej 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, je určený na určenie názvu 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, v ktorom 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 pripojenia k serveru 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, vyberte položku Sprievodcovia z ponuky Nástroje, 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.

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ý je možné následne 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 267 1C video lekcií zadarmo:

V predvolenom nastavení prebieha sledovanie cez všetky zadané 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 informačnú základňu(ID databázy môžete zistiť 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 zadané vo filtri:

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

Po prijatí stopy sa musí 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:

Pri vývoji aplikačných modulov systému Lexema.ru je pravidelne potrebné analyzovať databázové dotazy počas prevádzky obrazovkových formulárov, dotazov, zostáv, uložených procedúr a iných objektov s cieľom diagnostikovať problémy. Nástroje na profilovanie dotazov SQL sú navrhnuté na riešenie takýchto problémov. Umožňujú:

  • sledovať udalosti odlišné typy na databázovom serveri (vykonávanie dotazov, uložených procedúr atď.)
  • filtrovať udalosti podľa rôznych kritérií (názov databázy, prihlásenie používateľa atď.)
  • zaznamenajte postupnosť akcií vo forme stopy udalosti. Následne je možné stopu analyzovať a uložiť do súboru alebo databázy.
  • analyzovať výkon (rýchlosť vykonávania) dopytov, aby ste našli a odstránili systémové úzke miesta
  • atď.

Tento článok obsahuje dva nástroje:

  • Lexema SQL Profiler vložený do aplikačného modelára
  • MS SQL Server Profiler je súčasťou MS SQL Server

Lexema SQL Profiler

Tento nástroj je určený na analýzu dopytov na databázový server iniciovaných modelárom - programom na vývoj konfigurácií aplikácií. S jeho pomocou môžete preskúmať štruktúru databázy aplikovanej logiky a jej objektov.

Ak chcete použiť Lexema SQL Profiler, spustite modelár aplikácií. Kliknite na tlačidlo s obrázkom suda v ľavom hornom rohu okna:

Ak chcete spustiť záznam sledovania SQL dotazov modelára na databázový server, kliknite na tlačidlo "Štart" na paneli nástrojov.

V modelovači vykonajte akcie, pre ktoré chcete preskúmať databázové dotazy. Napríklad po otvorení zoznamu modelov sa vytvorí stopa z niekoľkých dopytov:

Tabuľka vyššie obsahuje zoznam udalostí (SQL dotazov), pole nižšie obsahuje obsah (SQL kód)

Polia tabuľky:

  • EventClass
  • TextData
  • trvanie
  • Doba spustenia
  • EndTime
  • ApplicationName
  • číta
  • Spisovatelia
  • transakcie

Napríklad zo sledovania udalostí pri otváraní zoznamu modelov možno vyvodiť nasledujúce závery: údaje sa vyžadujú z troch tabuliek (L8_Model, L8_ModelProperty a L8_Namespace); najdlhší dotaz sa robí na tabuľku L8_ModelProperty (242 ms).

MS SQL Server Profiler

MS SQL Server Profiler je nástroj zahrnutý v balíku MS SQL Server, ktorý vám umožňuje zachytávať udalosti databázového servera. Udalosti možno uložiť do súboru sledovania alebo databázy na ďalšiu analýzu alebo použiť na zopakovanie špecifickej série krokov na reprodukovanie problému na diagnostiku. Typické scenáre používania SQL Server Profiler:

  • monitorovanie výkonu inštancie SQL Server Database Engine
  • Ladenie príkazov Transact-SQL a uložených procedúr
  • analýzu výkonnosti identifikáciou pomalých dopytov
  • vykonávať záťažové testovanie a kontrolu kvality prehrávaním stôp
  • prehrať stopu jedného alebo viacerých používateľov
  • krok za krokom validácia príkazov Transact-SQL a uložených procedúr vo fáze návrhu projektu, aby sa zabezpečilo správne vykonanie kódu
  • riešenie problémov v SQL Server zachytením udalostí v produkčnom systéme (produkčná verzia) a ich prehratím v ladiacej (testovacej) verzii. Toto je veľmi užitočná funkcia, pretože vám umožňuje pokračovať v používaní produkčného systému počas testovania alebo ladenia.
  • auditovať a sledovať aktivity, ktoré sa vyskytujú na inštancii SQL Server. Táto schopnosť umožňuje bezpečnostnému správcovi prezerať akékoľvek udalosti auditu, najmä úspešné a neúspešné pokusy o prihlásenie a prístupové oprávnenia k pokynom a objektom.
  • ukladanie výsledkov sledovania vo formáte XML, ktorý poskytuje štandardizovanú hierarchickú štruktúru na ukladanie výsledkov sledovania. To vám umožňuje vykonávať zmeny v existujúcich trasách alebo ich vytvárať manuálne pre neskoršie prehrávanie.
  • štatistická analýza výsledkov sledovania, ktorá umožňuje zoskupovanie a analýzu podobných tried udalostí. Výsledky obsahujú počty založené na zoskupení podľa jedného stĺpca
  • umožniť používateľom, ktorí nie sú správcami, vytvoriť stopu
  • nastavenie šablón sledovania, ktoré je potom možné použiť na následné sledovanie

Spustenie a pripojenie k serveru

MS SQL Server Profiler môžete spustiť z ponuky OS Windows (ponuka "Štart") alebo z ponuky programu MS SQL Server Management Studio (Nástroje - "Aplikácia SQL Server Profiler"). Po spustení sa musíte prihlásiť na server - zadajte adresu servera, názov účtu a heslo:

Nastavenie možností sledovania

Potom pred spustením sledovania musíte nastaviť jeho vlastnosti:

  • Názov stopy - je vhodné nastaviť, ak ju plánujete uložiť
  • Použiť šablónu – určuje predvolenú konfiguráciu sledovania. Konkrétne zahŕňa triedy udalostí, ktoré chcete ovládať v SQL Server Profiler. Môžete napríklad vytvoriť šablónu, ktorá určuje, ktoré udalosti, stĺpce údajov a filtre sa majú použiť. Šablóny sa nespúšťajú, ale ukladajú sa do súborov TDF. Po uložení šablóna riadi zachytávanie údajov, ak sa spustí sledovanie založené na tejto šablóne.
  • Uložiť do súboru na opätovné otvorenie a analýzu
  • Uložiť do tabuľky – v tomto prípade sa stopa uloží do databázy a dá sa analyzovať pomocou SQL
  • Povoliť čas zastavenia sledovania – potrebné v prípade dlhých pozorovaní

Výber typov udalostí a ich atribútov

Dôležitým krokom pri nastavovaní sledovania je výber udalostí (musíte prejsť na príslušnú kartu). Záložka "Výber udalostí" obsahuje mriežku - tabuľku, ktorá obsahuje každú z tried udalostí dostupných na sledovanie. V tabuľke je jeden riadok pre každú triedu udalostí. Triedy udalostí sa môžu mierne líšiť v závislosti od typu a verzie servera, ku ktorému sú pripojené. Triedy udalostí sú identifikované v stĺpci Udalosti mriežky a sú zoskupené podľa kategórie udalostí. Zostávajúce stĺpce uvádzajú stĺpce údajov, ktoré možno vrátiť pre každú triedu udalostí. Ak chcete zahrnúť udalosti do sledovania, začiarknite políčko v stĺpci Udalosti.

Tento zoznam štandardne obsahuje iba niektoré kategórie a typy udalostí podľa zvolenej šablóny (pozri vyššie). Taktiež sa nezobrazujú všetky stĺpce. Pre viac podrobné nastavenia odporúča sa zaškrtnúť políčka „Zobraziť všetky udalosti“ a „Zobraziť všetky stĺpce“.

Ak sa sledovanie vykonáva na sledovanie požiadaviek aplikácie Lexema.ru, bude stačiť označiť 3 typy udalostí v 2 skupinách:

  • Uložené procedúry
    • RPC:Completed – vyskytuje sa po dokončení vzdialeného volania procedúry (RPC).
    • SP:Completed – vyskytuje sa po dokončení uloženej procedúry
  • TSQL - sledovanie vykonávania príkazov TransactSQL prenesených klientmi na databázový server
    • SQL:BatchCompleted – vyskytuje sa, keď príkaz TransactSQL dokončí vykonanie

Poznámka: príznak v stĺpci Udalosti môže byť v troch stavoch:

  • nezačiarknuté - udalosť sa nesleduje
  • čierne začiarknutie - všetky stĺpce údajov sú vybraté - pre vybranú udalosť sa zhromaždia všetky možné údaje
  • je začiarknuté šedé začiarknutie - sú vybraté iba niektoré stĺpce údajov - pre vybranú udalosť sa zhromaždia iba niektoré údaje podľa značiek v stĺpcoch

V predvolenom nastavení nie sú pre niektoré udalosti vybraté všetky stĺpce (je tam sivá značka začiarknutia). Ak chcete vybrať všetky stĺpce, musíte zrušiť začiarknutie políčka a znova ho nastaviť. Tým sa nastavia začiarkavacie políčka pre všetky viditeľné stĺpce údajov.

Ďalšie užitočné kategórie a typy udalostí sú uvedené nižšie:

  • bezpečnostný audit

Konfigurácia možností filtrovania

Filtre obmedzujú hromadenie udalostí v stope. Ak filter nie je nastavený, všetky udalosti vybratých tried udalostí sa vrátia do výstupu sledovania. Inštalácia filtra sledovania je voliteľná, ale filter minimalizuje náklady na zdroje sledovania. Filtre pre definície sledovania sa pridávajú na kartu Výber udalostí v dialógovom okne Vlastnosti sledovania alebo Vlastnosti šablóny sledovania.

Pri sledovaní udalostí, ktoré nastanú, keď konkrétny používateľ používa webové rozhranie Lexema.ru, je vhodné nastaviť filter „ApplicationName“ podobný ako<логин_пользователя>+&1, napríklad „PetrovAN&1“, ​​kde PetrovAN je prihlasovacie meno používateľa:

Pri tomto nastavení filtra budú do sledovania zahrnuté iba udalosti generované akciami zadaného používateľa.

Sledovanie udalostí

Predpokladajme, že po nastavení vyššie popísaných nastavení a spustení sledovania sa používateľ s prihlásením " airat" vstúpi do systému a otvorí register kategórií príjmov a výdavkov modulu „Domáce účtovníctvo“ a následne otvorí jeden z dokladov (ako príklad):

V dôsledku toho sa v stope SQL Server Profiler zobrazí zoznam udalostí:

Pri analýze zoznamu udalostí sledovania môžete vidieť, že jedna z najdlhších požiadaviek bola nasledujúca:

exec sp_executesql N "VYBERTE AKO, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS OD", N "@PrimaryKeyBoundary bigint,@TopCount bigint", @PrimaryKeyBoundary = NULL , @TopCount = NULL

Súdiac podľa názvu objektu (VTransactionCategory), ide o požiadavku na výber zoznamu kategórií transakcií. Typ tejto udalosti je RPC:Completed (dokončenie vzdialeného vykonania procedúry).

V zozname môžete vidieť aj udalosti typu SQL:BatchCompleted:

Toto je výsledok vykonania dotazu (QuerySource) Lexema.ru.

Ak chcete v texte vyhľadať dopyty vysledované v stope, musíte kliknúť na tlačidlo "Nájsť reťazec" (s ikonou ďalekohľadu) na paneli nástrojov alebo stlačiť kombináciu kláves Ctrl+F:

Potom musíte zadať hľadaný text a vybrať stĺpec vyhľadávania (text dopytu je obsiahnutý v stĺpci TextData). Po kliknutí na tlačidlo "Ďalej" sa kurzor umiestni na riadok udalosti, ktorý obsahuje hľadaný text.

Na účely testovania a ladenia je možné tieto požiadavky znova vykonať manuálne. Ak to chcete urobiť, musíte skopírovať ich text, otvoriť SQL Server Management Studio, pripojiť sa k príslušnému serveru, vybrať databázu, vytvoriť dotaz, vložiť jeho text a spustiť.

Okrem použitia Query Analyzer na nájdenie neefektívnych T-SQL príkazov môžete použiť aj pomôcku SQL Server Profiler. Profiler vám umožňuje monitorovať všetky príkazy T-SQL, ktoré sú spustené v systéme, s grafický displej informácie o týchto operátoroch. Profiler tiež poskytuje možnosti triedenia a filtrovania, ktoré môžete použiť na identifikáciu príkazov T-SQL, ktoré využívajú najviac CPU a I/O zdrojov. Pomocou týchto informácií môžete určiť, ktoré príkazy T-SQL uprednostniť pri ich ladení. Príkazy T-SQL, ktoré sú volané z aplikácie, je možné zobraziť v Profileri; nepotrebujete prístup k zdrojovému kódu samotnej aplikácie.

Pomôcka Profiler v SQL Server 2000 funguje podobne ako pomôcka Profiler v SQL Server 7, ale s určitými vylepšeniami. Jedným užitočným doplnkom je šablóna sledovania, ktorú možno použiť na vytváranie súborov sledovania. (Sledovanie sa musí ešte vytvoriť, aby ste ho mohli použiť na monitorovanie operácií servera SQL Server.) V serveri SQL Server bolo potrebné stopy vytvoriť manuálne.

Ak chcete vyvolať pomôcku Profiler a spustiť sledovanie, postupujte podľa týchto krokov.

  1. Kliknite na tlačidlo Štart, ukážte na Programy, ukážte na Microsoft SQL Server a potom vyberte Profiler. Keď prvýkrát otvoríte okno Profiler, bude prázdne. Na SQL Serveri sa neotvoria žiadne panely a nevykoná sa žiadne profilovanie.
  2. Ak chcete spustiť profilovanie, musíte vybrať existujúcu šablónu sledovania na spustenie alebo vytvorenie nová šablóna stopy vykonať. (Proces spustenia je popísaný v kroku 4.) SQL Server 2000 Profiler poskytuje množstvo šablón sledovania, z ktorých si môžete vybrať. Používanie týchto šablón sledovania vám môže ušetriť veľa času, pretože nemusíte vytvárať stopu od začiatku. Ak chcete zobraziť zoznam šablón trasovania, kliknite na ponuku Súbor (Súbor), zadajte príkaz Otvoriť (Otvoriť) a vyberte položku Šablóny stôp (Šablóny trasovania), čím sa zobrazí dialógové okno Otvoriť (obr. 35.16).


    Ryža. 35.16.

    Nasledujúce šablóny sledovania sú poskytované so serverom SQL Server.
    • SQLServerProfilerSP_Counts.tdf. Počíta počet spustených uložených procedúr. Výsledky sú zoskupené podľa názvu uloženej procedúry a obsahujú počet spustení príslušnej procedúry.
    • SQLServerProfilerStandard.tdf. Zhromažďuje všeobecné informácie o pripojeniach, vykonané uložené procedúry a SQL balíky v poradí, v akom sú spustené.
    • SQLServerProfilerTSQL.tdf. Zhromažďuje informácie o všetkých príkazoch T-SQL v poradí, v akom prichádzajú od používateľov na server SQL Server. Toto sledovanie jednoducho obsahuje príkazy T-SQL a časy, kedy boli spustené.
    • SQLServerProfilerTSQL_Duration.tdf. Vytlačí príkazy T-SQL, ktoré boli spustené, ako aj čas (v milisekundách), ktorý bol potrebný na vykonanie týchto príkazov.
    • SQLServerProfilerTSQL_Grouped.tdf. Zhromažďuje údaje podobné tým, ktoré zhromažďuje SQLServerProfilerTSQL, ale zoskupuje príkazy používateľa, ktorý tieto príkazy spustil.
    • SQLServerProfilerTSQL_Replay.tdf. Poskytuje detailné informácie o spúšťaní príkazov T-SQL. Toto sledovanie obsahuje údaje, ktoré možno použiť na prehratie príkazov T-SQL v Query Analyzer.
    • SQLServerProfilerTSQL_SPs.tdf . Vytlačí špecifikované uložené procedúry, ako aj príkazy T-SQL v rámci týchto procedúr. Výsledky sa zobrazia v poradí, v akom boli vykonané.
    • SQLServerProfilerTuning.tdf. Zhromažďuje údaje o uloženej procedúre a vykonávaní balíka SQL.
    Tieto šablóny sledovania môžu byť veľmi užitočné. Napríklad šablóna sledovania SQLServerProfilerTSQL_Duration vám môže pomôcť identifikovať príkazy T-SQL, ktorých vykonanie trvá najviac času. Tieto informácie môžu slúžiť ako východiskový bod optimalizácia dopytu. Operátorovi to môže trvať dlho, pretože robí veľa práce, alebo možno preto, že je neefektívny. Ako uvidíte v ďalšom kroku, pre akékoľvek sledovanie musíte použiť preddefinovanú šablónu.
  3. Ak chcete spustiť sledovanie, kliknite na položku Súbor, ukážte na položku Nový a potom vyberte položku Sledovať. Zobrazí sa dialógové okno Connect to SQL Server (Obrázok 35-17). V tomto dialógovom okne vyberte systém SQL Server na sledovanie a potom kliknite na tlačidlo OK.


    Ryža. 35.17.
  4. Zobrazí sa okno Vlastnosti stopy (obrázok 35.18). Na karte Všeobecné môžete zadať názov stopy (pole Názov stopy) a vybrať šablónu stopy, ktorú chcete použiť ako východiskový bod. Pre tento príklad vyberte šablónu SQLServerProfilerTSQLDuration. V spodnej časti karty môžete určiť, kam chcete uložiť sledovanie – do súboru (Uložiť do súboru) a/alebo do tabuľky servera SQL (Uložiť do tabuľky). Ak nie je nastavený žiadny z týchto príznakov, výsledky sledovania sa zobrazia iba na obrazovke. Okrem toho môžete nastaviť čas ukončenia sledovania (zaškrtávacie políčko a pole Povoliť čas zastavenia sledovania). To môže byť veľmi užitočné pre dlhodobé stopy.


    Ryža. 35,18.
  5. Ďalej kliknite na záložku Udalosti (Udalosti) (obr. 35.19).


    Ryža. 35,19. Na tejto karte môžete vybrať jednu alebo viac udalostí, ktoré sa budú v tomto sledovaní sledovať. Môžete sledovať celý rad tried (kategórií) udalostí a konkrétnych udalostí. Zoznam Dostupné triedy udalostí obsahuje triedy udalostí, ako sú kurzory, chyby a varovania, zámky, objekty, kontroly, SQL operátori, uložené procedúry, transakcie a TSQL.
  6. Po výbere udalostí, ktoré chcete sledovať, kliknite na kartu Stĺpce údajov (Obrázok 35-20). Na tejto karte zadajte, aké údaje sa budú zhromažďovať počas tohto sledovania. Tieto údaje môžu zahŕňať čas ukončenia,

Pri našej práci sa pomerne často stretávame so situáciou, kedy určitá požiadavka beží pomaly a v texte požiadavky 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 SQL Profiler.

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

SQL Profiler je program, ktorý sa dodáva so serverom MS SQL Server a je určený na zobrazenie všetkých udalostí, ktoré sa vyskytnú na serveri SQL Server, alebo inými slovami, na zaznamenanie sledovania.

Prečo by programátor 1C potreboval SQL Profiler?

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:

žiadosti dlhšie ako určitý čas

dotazy na konkrétnu tabuľku

čakanie na blokoch

časové limity

mŕtve body

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ť napríklad potrebné na zistenie, prečo dotaz beží pomaly, alebo sme napísali veľký dotaz a chceme sa uistiť, že telo dotazu SQL 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 - SQL Profiler

2. Vytvorte novú stopu

Súbor - Vytvorenie stopy (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. Na ukážku úplný zoznam vlastnosti a udalosti, povoľte príznaky „Zobraziť všetky stĺpce“ a „Zobraziť všetky udalosti“.

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 je vykonaný 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 uvidíme v sledovaní iba dopyty do databázy "TestBase_8_2"

Ak chcete, môžete použiť filter na iné polia, najzaujímavejšie z nich: Trvanie (Duration), TextData (zvyčajne ide o text dotazu) a Počet riadkov (počet riadkov vrátených dotazom).

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á to“. 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:

Eraser - vymaže okno sledovania

Štart – spustí sledovanie

Pozastaviť – pozastaví sledovanie, keď kliknete na Štart, sledovanie sa obnoví

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 kódu a názvu sa získavajú pomocou funkcie KeyLookup, ktorá zaberie 50 % času.

Použitím obsahové menu, grafický plán je možné uložiť do samostatný súbor s rozšírením *.SQLPlan a otvorte ho 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ýraznením, ako napríklad Notepad++.

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.

Ďalej musíte vybrať databázu na zadanom serveri a zadať názov tabuľky, do ktorej sa sledovanie uloží. Môžete vybrať existujúcu tabuľku alebo napísať nový názov a potom sa tabuľka automaticky vytvorí vo vybranej databáze.

V tomto prípade si treba uvedomiť, ž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 často potrebujete použiť 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 v prípade potreby 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.

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é, myslím, že v budúcnosti pridám do zbierky článkov na túto tému.

Ak máte stále otázky týkajúce sa používania SQL Profiler, opýtajte sa ich v komentároch, rád odpoviem.