Monitorovanie efektívnosti MS SQL Server. Praktické rady

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 zobraziť všetky príkazy T-SQL, ktoré sa vykonávajú v systéme, pričom graficky zobrazuje informácie o týchto príkazoch. Profiler tiež poskytuje možnosti triedenia a filtrovania, ktoré môžete použiť na identifikáciu príkazov T-SQL, ktoré využívajú väčšinu CPU a I/O zdrojov. Pomocou týchto informácií môžete určiť, na ktoré príkazy T-SQL sa zamerať a prispôsobiť ich. 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 sa správa podobne ako pomôcka Profiler v SQL Server 7, ale obsahuje niektoré vylepšenia. Jedným užitočným doplnkom je šablóna sledovania, ktorú môžete použiť na vytváranie súborov sledovania. (Sledovania musia byť vytvorené, aby ste ich mohli použiť na monitorovanie operácií SQL Servera.) V SQL Serveri bolo potrebné vytvoriť stopy 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. V SQL Serveri sa neotvorí žiadny panel a nevykoná sa žiadne profilovanie.
  2. Ak chcete začať vytvárať profilovanie, musíte sa rozhodnúť spustiť existujúcu šablónu sledovania alebo vytvoriť novú šablónu sledovania. (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 sledovania, kliknite na ponuku File (Súbor), ukážte na príkaz Open (Otvoriť) a vyberte položku Trace Templates (Šablóny sledovania), aby sa zobrazilo dialógové okno Open (Obrázok 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 spojeniach, vykonané uložené procedúry a SQL balíky v poradí vykonávania.
    • SQLServerProfilerTSQL.tdf... Zhromažďuje informácie o všetkých príkazoch T-SQL v poradí, v akom sú zadané do servera SQL od používateľov. Toto sledovanie obsahuje iba príkazy T-SQL a načasovanie ich spustenia.
    • SQLServerProfilerTSQL_Duration.tdf... Zobrazuje 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 podľa používateľa, ktorý tieto príkazy spustil.
    • SQLServerProfilerTSQL_Replay.tdf... Poskytuje podrobné informácie o príkazoch T-SQL, ktoré boli spustené. Toto sledovanie obsahuje údaje, ktoré možno použiť na prehratie príkazov T-SQL v Query Analyzer.
    • SQLServerProfilerTSQL_SPs.tdf. Vypíše špecifikované uložené procedúry, ako aj príkazy T-SQL v rámci týchto procedúr. Výsledky sa zobrazia v poradí vykonania.
    • SQLServerProfilerTuning.tdf... Zhromažďuje údaje o uloženej procedúre a vykonaní balíka SQL.
    Tieto vzory stopy 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á najdlhšie. Tieto informácie môžu slúžiť ako východiskový bod optimalizácia dopytu... Operátor môže byť časovo náročný, pretože robí veľa práce alebo možno preto, že je neefektívny. Ako uvidíte v ďalšom kroku, na 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 sledovania, ktorú chcete použiť ako východiskový bod. V tomto príklade 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 začiarknuté žiadne z týchto políčok, 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 kartu Udalosti (obrázok 35.19).


    Ryža. 35,19. Na tejto karte môžete vybrať jednu alebo niekoľko udalostí, ktoré sa budú v tomto sledovaní monitorovať. Môžete sledovať rôzne triedy (kategórie) 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, ktoré údaje sa budú zhromažďovať počas tohto sledovania. Tieto údaje môžu zahŕňať čas ukončenia,

Čo sa z tohto článku dozviete?

  • Účel nástroja SQL Profiler Trace Tool
  • Ako sledovať text dopytu do DBMS, do ktorého sa prekladá dopyt 1C
  • Nastavenia filtra sledovania
  • Ako prispôsobiť SQL Profiler

V práci často nastáva situácia, keď požiadavka v 1C z nejakého dôvodu funguje pomaly, ale analýza textu žiadosti nám nehovorí o žiadnych problémoch.

V tomto prípade musíte tento problém študovať na nižšej úrovni. Aby sme to urobili, musíme sa pozrieť na text SQL dotazu a plán dotazov. Na to môžete použiť SQL Profiler.

SQL Profiler - účel

SQL Profiler je program zahrnutý v MS SQL Server, ktorý je určený na zobrazenie všetkých udalostí, ktoré sa vyskytujú na SQL Serveri. Inými slovami, je potrebné zaznamenať stopu.

V akých prípadoch môže byť tento nástroj užitočný pre programátora 1C? Najprv môžete získať text dotazu v SQL a vidieť jeho plán. Dá sa to urobiť aj v technologickom časopise (TJ), ale plán na vyžiadanie TJ nie je taký pohodlný a vyžaduje si určité zručnosti a schopnosti. Okrem toho v profileri môžete vidieť nielen textový, ale aj grafický plán vykonávania dotazov, čo je pohodlnejšie.

Profiler vám tiež umožňuje zistiť:

  • žiadosti dlhšie ako určitý čas
  • dotazy na konkrétnu tabuľku
  • čakanie na zámky
  • časové limity
  • uviaznutia atď.

Analýza dotazov pomocou SQL Profiler

Profiler sa často používa špeciálne na analýzu dopytov. A zároveň nie je potrebné analyzovať všetky spustiteľné dotazy, ale ako sa určitý dotaz 1C preloží do SQL, a venujte pozornosť jeho plánu vykonávania.

Najmä je potrebné pochopiť, prečo je požiadavka pomalá. Alebo pri vytváraní veľkého a zložitého dotazu sa musíte uistiť, že dotaz SQL neobsahuje spojenia poddotazov.

Ak chcete sledovať požiadavku v sledovaní, vykonajte tieto kroky:

1. Spustite SQL Profiler: Štart - Všetky programy - Microsoft SQL Server 2008 R2 - Nástroje produktivity - SQLProfiler.

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 Pripojte sa:

Nič nám nebráni v sledovaní servera DBMS umiestneného na akomkoľvek inom počítači.

4. V okne, ktoré sa zobrazí Vlastnosti stopy prepnúť na záložku Výber udalostí:

Keďže potrebujeme dotazy a plány dotazov, musíme povoliť zodpovedajúce udalosti. Ak chcete zobraziť úplný zoznam vlastností a udalostí, povoľte príznaky Zobraziť všetky udalosti a Zobraziť všetky stĺpce... Teraz musíte vybrať iba udalosti zobrazené na obrázku nižšie, zvyšok musí byť vypnutý:

Popis týchto udalostí:

  • ShowplanStatisticsProfile - textový plán vykonania dotazu
  • ShowplanXMLStatisticsProfile - grafický plán vykonávania dotazov
  • RPC: Completed – text požiadavky, ak sa vykonáva ako procedúra (ak sa vykonáva požiadavka 1C s parametrami)
  • SQL: BatchCompleted - text požiadavky, ak je vykonaná ako normálna požiadavka (ak bola vykonaná požiadavka 1C bez parametrov)

6. V tejto fáze musíte nakonfigurovať filter pre vybrané udalosti. Ak filter nie je nainštalovaný, uvidíme dopyty pre všetky databázy umiestnené na tomto serveri DBMS. Kliknutím na tlačidlo Filtre stĺpcov nastavíte filter podľa názvu databázy:

Teraz vidíme v sledovaní iba dopyty do databázy "TestBase_8_2".

Môžete tiež umiestniť filter na iné polia, najzaujímavejšie z nich sú:

  • Trvanie
  • TextData (zvyčajne text požiadavky)
  • RowCounts (počet riadkov vrátených dotazom)

Povedzme, že potrebujeme „zachytiť“ všetky požiadavky do tabuľky „_InfoRg4312“ trvajúce viac ako 3 sekundy v databáze „TestBase_8_2“. To si vyžaduje:

a) Nastavte filter podľa databázy (pozri vyššie)
b) Nastavte filter podľa trvania (nastavené v milisekundách):

c) Nastavte filter podľa textu požiadavky:

Ak chcete nastaviť filter podľa textu požiadavky, použite masku. Ak chcete mať prehľad o dotazoch, ktoré pristupujú k viacerým tabuľkám, v sekcii "Vyzerá ako" sa vytvorí viacero položiek. Podmienky prekrytého filtra spolupracujú.

7. Teraz začnite sledovať pomocou tlačidla Bežať v okne Vlastnosti stopy a sledovať udalosti, ktoré spadajú pod nainštalované filtre, ktorých zobrazenie bolo nakonfigurované.

Tlačidlá príkazového panela sa používajú na ovládanie smerovania:

Účel tlačidiel:

  • Guma- vymaže okno sledovania
  • Štart- začne sledovanie
  • Pauza- pozastaví sledovanie, keď kliknete na Štart, sledovanie sa obnoví
  • Stop- zastaví sledovanie

8. Okno sledovania pozostáva z dvoch častí. V hornej časti sú udalosti a ich vlastnosti, v dolnej časti - informácie v závislosti od typu udalostí. V našom príklade sa tu zobrazí buď text požiadavky alebo jej plán.

9. Spustite požiadavku v konzole dotazu 1C a uvidíme, ako sa prejaví v profileri:

Zo správania pri sledovaní môžete vidieť, že žiadostí bolo nakoniec niekoľko a iba jedna z nich nás zaujíma. Ostatné požiadavky sú servisné požiadavky.

10. Vlastnosti udalostí umožňujú hodnotiť:

  • koľko sekúnd žiadosť trvala (trvanie)
  • koľko logických čítaní bolo
  • koľko riadkov dotaz vrátil ako výsledok (RowCounts) atď.

V našom prípade požiadavka trvala 2 milisekundy, vykonala 4 logické čítania a vrátila 1 riadok.

11. Ak sa pozriete na jednu udalosť vyššie, môžete vidieť plán dotazov v grafickej podobe:

Z plánu je zrejmé, že vyhľadávanie sa vykonáva na indexe podľa ceny, 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, čo zaberá 50 % času. .

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

12. Ak pôjdeme ešte vyššie, tak uvidíme rovnaký plán dotazov, ale v textovej podobe. Práve tento plán sa zobrazuje v TZ, MCC a ďalších nástrojoch na monitorovanie výkonu 1C.

  • Vo formáte samotného profilera, teda s príponou * .trc
  • Do formátu xml
  • Vytvorte šablónu zo stopy (Pozrite si ďalšiu položku)
  • Uložte výsledné sledovanie ako databázovú tabuľku. Je to veľmi pohodlný spôsob, keď napríklad potrebujete nájsť najpomalší dotaz v sledovaní alebo filtrovať dotazy podľa nejakého parametra.

Potom vyberieme databázu na zadanom serveri, zadáme názov tabuľky, do ktorej sa bude sledovanie uložiť. Môžete použiť existujúcu tabuľku alebo jej dať nový názov a táto tabuľka sa potom vytvorí automaticky.

Teraz je možné zostaviť dopyty ľubovoľnej zložitosti podľa našej tabuľky: napríklad hľadať najdlhšie prebiehajúce dopyty.

Musíte tiež pamätať na to, že Trvanie sa do tabuľky ukladá v milióntinach sekundy a pri zobrazení výsledku je potrebné previesť hodnotu na milisekundy. V tabuľke je tiež stĺpec RowNumber, ktorý zobrazuje číslo tohto riadka v sledovaní.

14. Ak často používate profilovač na analýzu dopytov, neustále prispôsobovanie požadovaných udalostí a filtrov vám zaberie veľa času.

V tomto prípade nám pomôžu šablóny trace, kde si nakonfigurujeme potrebné filtre a poradie stĺpcov a potom už len pri vytváraní nového trasovania použijeme existujúcu šablónu.

Ak chcete vytvoriť šablónu, použite ponuku Súbor - Šablóny - Nová šablóna:

Na prvej karte zadajte typ servera, názov šablóny av prípade potreby nastavte príznak, aby sa táto šablóna používala predvolene.

Na druhej karte vyberieme požadované udalosti a nakonfigurujeme filtre (ako je uvedené vyššie).

Pri vytváraní novej stopy môžeme špecifikovať požadovanú šablónu a následne sa na druhej záložke automaticky vyplnia všetky filtre a udalosti podľa vytvorenej šablóny.

Burmistrov Andrej

Dnes budeme merať výkon našej aplikácie pomocou Nástroj na profilovanie Visual Studio.

Nástroj na profilovanie Visual Studio umožňuje vývojárom merať, hodnotiť výkon aplikácie a kódu. Tieto nástroje sú plne zabudované do IDE, aby vývojárom poskytli neprerušovanú kontrolu.
V tomto návode krok za krokom vyprofilujeme aplikáciu. PeopleTrax použitím Vzorkovanie a Prístrojové vybavenie profilovacie techniky na identifikáciu problémov s výkonom aplikácie.

Veľa obrázkov.

Príprava

Na dokončenie tohto návodu budete potrebovať:
  • Microsoft Visual Studio 2010
  • Stredne pokročilá znalosť C#
  • Kópia testovacej aplikácie PeopleTrax, ktorú je možné stiahnuť z MSDN Code Gallery

Profilovacie metódy

Odstúpme trochu od hlavnej témy článku a pouvažujme nad možnými metódami profilovania. Túto kapitolu je možné preskočiť, použité metódy profilovania budú stručne opísané pred použitím.
Vzorkovanie
Vzorkovanie- zbiera štatistické údaje o prevádzke aplikácie (pri profilovaní). Táto metóda je ľahká, a preto v dôsledku jej fungovania je v získaných údajoch veľmi malá chyba.

V každom určitom časovom intervale sa zhromažďujú informácie o zásobníku hovorov. Na základe týchto údajov sa vypočíta výkon. Používa sa na počiatočné profilovanie a na identifikáciu problémov s využitím procesora.

Prístrojové vybavenie
Prístrojové vybavenie- zhromažďuje podrobné informácie o dobe chodu každej volanej funkcie. Používa sa na meranie výkonu I/O operácií.

Metóda vloží svoj kód do binárneho súboru, ktorý zachytí synchronizačné (časové) informácie pre každú funkciu v súbore a pre každú funkciu, ktorá je v ňom volaná.

Prehľad obsahuje 4 hodnoty, ktoré poskytujú uplynutý čas:

  • Uplynulé vrátane- celkový čas strávený na funkcii
  • Aplikácia vrátane- čas strávený vykonávaním funkcie, okrem času volaní operačného systému.
  • Uplynulý exkluzívny- čas strávený vykonávaním kódu v tele. Čas strávený funkciami volanými cieľovou funkciou.
  • Exkluzívna aplikácia- čas strávený vykonávaním kódu v tele. Eliminuje čas strávený vykonávaním volaní operačného systému a čas strávený vykonávaním funkcií spôsobený cieľovou funkciou.
Súbeh
Súbeh- zhromažďuje informácie o aplikáciách s viacerými vláknami (informácie o ladení aplikácií s viacerými vláknami nájdete v „Príručke ladenia aplikácií s viacerými vláknami v Visual Studio 2010“). Metóda zhromažďuje podrobné informácie o zásobníku hovorov vždy, keď sú konkurenčné vlákna nútené čakať na prístup k zdroju.
Pamäť .NET
Pamäť .NET- Profiler zhromažďuje informácie o type, veľkosti a počte objektov, ktoré boli vytvorené v alokácii alebo boli zničené zberačom odpadu. Profilovanie pamäte nemá takmer žiadny vplyv na celkový výkon aplikácie.
Interakcia na úrovni
Interakcia na úrovni- pridáva do profilovacieho súboru informácie o synchrónnych hovoroch ADO.NET medzi stránkou ASP.NET alebo iné aplikácie a SQL server. Údaje zahŕňajú počet a čas hovorov, ako aj maximálny a minimálny čas.

Týmto sa uzatvára prehľad metód profilovania a pokračuje sa v učení, ako profilovať aplikácie.

Profilovanie vzoriek

Odber vzoriek je technika profilovania, ktorá pravidelne skúma príslušný proces, aby určila, ktorá funkcia je aktívna. Výsledkom je, že zobrazuje, koľkokrát bola funkcia počas testovania na začiatku zásobníka hovorov.
Profilovanie
Otvorenie testovacieho projektu PeopleTrax... Konfiguráciu nastavíme na Uvoľnite(Vo verzii Debug sú vložené ďalšie informácie na ladenie aplikácie a budú mať zlý vplyv na presnosť výsledkov profilovania).

Na jedálnom lístku Analyzovať kliknite na Spustite Sprievodcu výkonom.

V tomto kroku si musíte zvoliť metódu profilovania. Vyberte CPU Sampling (odporúča sa) a kliknite na Ďalej.

Vyberieme si, ktorú aplikáciu budeme profilovať, to je PeopleTrax a tlačidlo Ďalej. V ďalšom kliknite na Dokončiť a profiler a naša aplikácia sa automaticky spustí. Na obrazovke vidíme program PeopleTrax. Stlačte gombík Získajte ľudí, čakáme na dokončenie prác a Exportovať údaje... Zatvoríme notebook a program a profiler vygeneruje správu.

Prehľad vygenerovaný Profilerom (* .vsp)

Analýza správy o metóde odberu vzoriek
V Zhrnutie zobrazí graf využitia procesora počas celého času profilovania. Zoznam Horúca cesta zobrazuje vetvy hovorov, ktoré boli najaktívnejšie. A na zozname Funkcie vykonávajúce väčšinu individuálnej práce(ktorého názov hovorí sám za seba) - použité funkcie O dlhší čas spracovania týchto funkcií v tele.

Pohľad na zoznam Horúca cesta vidíme, že metóda PeopleNS.People.GetNames zaujíma takmer posledné miesto vo vlákne hovoru. Potom si ho môžete podrobnejšie preštudovať, aby ste zlepšili výkon. Kliknite na PeopleNS.People.GetNames a pred nami sa otvorí Detaily funkcie.

Toto okno obsahuje dve časti. Výdavkové okno poskytuje grafické znázornenie toho, ako funkcie fungujú, a príspevok funkcie a jej volaní k počtu vzorkovaných inštancií. Príslušnú funkciu môžete zmeniť kliknutím na ňu myšou.

Zobrazenie kódu funkcie zobrazuje kód metódy, keď je k dispozícii, a zvýrazní „najdrahšie“ riadky vo vybranej metóde. Keď je zvolená metóda GetNames môžete vidieť, že číta reťazce z prostriedkov aplikácie pomocou StringReader pridaním každého riadku do ArrayList... Neexistujú žiadne zrejmé spôsoby, ako túto časť vylepšiť.

Pretože PeopleNS.People.GetPeople jediný, kto volá GetNames- stlačiť GetPeople... Táto metóda sa vracia ArrayList predmety PersonInformationNS.PersonInformation s menami osôb a spoločností vrátených metódou GetNames... napriek tomu GetNames volaný dvakrát pri každom vytvorení Osobné informácie... (Zobrazuje sa žltým a červeným zvýraznením). Je zrejmé, že metódu môžete ľahko optimalizovať vytvorením zoznamov iba raz na začiatku metódy.

Alternatívna verzia GetPeople je tiež v kóde a teraz ho zahrnieme. Ak to chcete urobiť, musíte definovať OPTIMIZED_GETPEOPLE ako symbol podmienenej kompilácie v okne vlastností projektu Ľudia a PeopleTrax. A áno, ak chcete zopakovať moje experimenty, potom musíte opraviť chybu v projekte. Názov prostriedku nie je v konštruktore optimalizovanej triedy napísaný správne: PeopleNS.Resources sú potrebné spolu s PeopleNS.Resource. Ak sa to nezmení, všetko padne s hroznými chybami.

Optimalizovaná metóda nahradí starú pri ďalšej zostave.

Reštartujte profilovanie v aktuálnej relácii kliknutím Spustite pomocou profilovania v okne Prieskumník výkonu... Kliknite na Získajte ľudí a Exportovať údaje... Zatvoríme zápisník aj program a profilovač vygeneruje novú zostavu.

Ak chcete porovnať dva prehľady, vyberte oba a RMB Porovnajte prehľady výkonnosti... Stĺpec delta zobrazuje rozdiel vo výkone verzie Základná línia s neskôr Porovnanie... Vyberáme % vrátane vzoriek a Použiť.

Ako vidíte, nárast výkonu je viditeľný voľným okom

Prístrojové profilovanie

Táto metóda je užitočná pri profilovaní I/O operácií, zápisov na disk a sieťovej komunikácie. Táto metóda poskytuje viac informácií ako predchádzajúca, ale prináša viac režijných nákladov. Binárne súbory získané po vložení dodatočného kódu sú väčšie ako zvyčajne a nie sú určené na nasadenie.

Tentoraz sa v našej analýze zameriame na export dát, pri ktorom sa do súboru poznámkového bloku zapíše zoznam ľudí.

Profilovanie
V Prieskumník výkonu vyberte si Prístrojové vybavenie a kliknite na tlačidlo Spustiť profilovanie. Kliknite na položku Získať ľudí. Po načítaní ľudí počkajte 10 sekúnd a kliknite na Exportovať údaje. Zatvoríme notebook a program. Profiler vygeneruje správu.
Analýza
Profiler zobrazí nasledujúci obrázok:

Nedostali sme informácie, ktoré sme chceli. Poďme filtrovať údaje. Zámerne sme počkali 10 sekúnd, aby sme odfiltrovali údaje o profilovaní, ktoré teraz nepotrebujeme. Označíme od 13. do konca a stlačíme Filtrujte podľa výberu... Už iný výsledok:

Horúca cesta ukazuje, že metóda Concat trvá dlho (je tiež na prvom mieste v zozname funkcií s najvyššou individuálnou prácou). Kliknite na Concat zobraziť podrobné informácie o metóde.

To je jasné PeopleTrax.Form1.ExportData Je to jediná metóda, ktorá volá Concat... Tlačiť PeopleTrax.Form1.ExportData pri volaní metód ( Funkcia volá túto funkciu).

Metódu analyzujeme v okne kódu. Upozorňujeme, že neexistuje žiadne priame volanie do služby Concat. Spolu ide o použitie operandu += ktoré kompilátor nahrádza metódami System.String.Concat... Ako už takmer každý vie, akékoľvek zmeny reťazcov v .NET zničia starú verziu reťazca a vytvoria upravený reťazec. Našťastie .NET má triedu StringBuilder ktorý je určený pre tento druh práce.

Projekt už používa optimalizovanú metódu StringBuilder... V projekte PeopleTrax pridajte premennú kompilácie OPTIMIZED_EXPORTDATA... Uložte a znova spustite profilovač a porovnajte prehľady. Okamžite je jasné (a logicky pochopiteľné), že sme optimalizovali volania Concat (zo 6000 na 0 krát).

Po spustení aplikácie môžete vidieť viditeľné zlepšenie výkonu. Je veľmi dôležité znova spustiť profilovanie, dokonca sú viditeľné zlepšenia. Zobrazenie nových údajov po odstránení problému môže ukázať iné problémy s výkonom aplikácie.

SQL Server 2005 Profiler, sledovanie aplikačných dotazov, vzory sledovania, zoskupovanie informácií o dotazoch

Jedným z najužitočnejších nástrojov na sledovanie aktivity používateľov je profilovač (Profiler). 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ť činnosť aplikácie a zistiť, aké príkazy vykonáva na serveri. Tieto informácie sa môžu hodiť:

· Aby ste pochopili, s aký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 sú z hľadiska požiadaviek na výkon odosielané na server aplikáciou. V praxi môžete pri používaní profilera často identifikovať úplne neoptimálne dopyty, napríklad keď sa na klientovi vykonáva filtrovanie alebo triedenie údajov;

· Pochopiť pri vykonávaní ktorého príkazu Transact -SQL z aplikácie na serveri nastane chyba;

q zhromažďovať informácie o aktivite používateľa počas dlhého časového obdobia (napríklad môžete 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 výkonu 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ú.

V SQL Server 2005 má profiler veľa nových vecí:

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

q teraz je 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 mnoho nových udalostí a informačných zdrojov, 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 môžete uložiť výsledky sledovania vo formáte XML (možnosť zapisovať do formátov ANSI, OEM, UNICODE je tiež uložená);

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

q teraz je možné zoskupovať udalosti priamo v okne profilovača. Pomocou zoskupovania môžete napríklad veľmi ľahko vypočítať, koľkokrát bol konkrétny príkaz Transact -SQL vykonaný 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ýkonové nástroje | SQL Server Profiler ... Ak chcete začať, v okne profilovača, ktoré sa otvorí v ponuke Súbor(Súbor), ktorý musíte vybrať NovýTrace(Nové sledovanie) a pripojte sa k serveru SQL Server 2005, ktorý budete monitorovať. 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ť parametre tejto relácie. Toto nastavenie sa vykonáva v okne TraceVlastnosti(Vlastnosti sledovania), ktorý sa otvorí automaticky pred spustením relácie sledovania (obr. 11.1).

Ryža. 11.1. Nastavenie parametrov relácie sledovania

V záložke generál(Všeobecné) uvedené Použiteaš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(Výber udalosti)). Určenie správnej šablóny však môže ušetriť čas a vyhnúť sa chybám. Poďme sa preto podrobnejšie venovať šablónam.

Šablóna je uložená v špeciálnom súbore 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 uložené procedúry a príkazy Transact -SQL, ktoré sú spustené na vykonanie;

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

q TSQL- zhromažďujú sa informácie o všetkých príkazoch Transact -SQL spustených na vykonanie na serveri. Okrem príkazového kódu sa zaznamenávajú aj informácie o identifikátoroch užívateľských procesov a čase spustenia. Táto šablóna sa zvyčajne 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 čase, kedy bol príkaz Transact -SQL spustený, sa zaznamenáva čas potrebný na jeho vykonanie. Táto šablóna sa zvyčajne používa na manuálne 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 používateľskom mene, ktoré bolo použité na pripojenie. V tomto prípade sú záznamy zoskupené podľa prihlásenia. Tento vzor sa zvyčajne používa v situáciách, keď chcete sledovať aktivitu špecifickej aplikácie;

q TSQL _Prehrať znova- budú zaznamenané 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ácií o spustení celej uloženej procedúry (udal SP: Začíname), táto možnosť sledovania tiež zaznamenáva informácie o vykonaní každého príkazu v tejto uloženej procedúre (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 tom, ako pracovať s týmto nástrojom na automatizovanú analýzu a optimalizáciu výkonu, sa bude diskutovať v sekta. 11.5.5.

Ako už bolo spomenuté, nie je vôbec potrebné obmedzovať sa iba na sadu hotových šablón. Môžete použiť svoje vlastné parametre relácie sledovania ich konfiguráciou 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á časť 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ĺpce(Zobraziť všetky stĺpce).

Často sa stáva, že potrebujete sledovať len akcie vykonané v konkrétnej databáze, konkrétnej aplikácii, alebo konkrétneho používateľa, 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) na karte DianiaVýber... Pre každý stĺpec môžete nakonfigurovať zaznamenávanie iba určitých hodnôt ( Páči sa mi to) alebo zákaz zaznamenávania určitých hodnôt ( Nie ako). Štandardne je nakonfigurovaný 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 zhromažďovania informácií o sledovaní. Tento filter je lepšie neodstraňovať, pretože inak môže dôjsť k pozitívnej spätnej väzbe s nekonečným zaznamenávaním informácií.

S jedným tlačidlom navyše OrganizovaťStĺpce(Organizovať stĺpce), ktorý sa nachádza na karte DianiaVýber, môžete prispôsobiť poradie stĺpcov pre zobrazenie alebo zadanie v profileri. Venujte pozornosť sekcii Skupina(Skupina) v tomto zozname. Pre tie stĺpce, ktoré sú v ňom umiestnené, sa automaticky vykoná zoskupenie. Ak do tejto časti vložíte iba jeden stĺpec, pri prezeraní budete môcť 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 položky pre požadovanú databázu, aplikáciu alebo používateľa možno rozbaliť a zbaliť).

Po výbere požadovanej šablóny alebo konfigurácii vlastného súboru udalostí na zaznamenávanie sa stačí vrátiť na kartu generál a nakonfigurujte niekoľko ďalších parametrov pre reláciu 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í poradcovi pre ladenie databázy;

q možno opakovane „prehrať“ v profileri opakovaním všetkých zaznamenaných príkazov, napríklad na vyhodnotenie výkonu pri rôznych nastaveniach 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 Predvolená veľkosť súboru 5 MB je veľmi malá. Pri profilovaní produkčného servera sa táto veľkosť zadáva v minútach. Pravda, v predvolenom nastavení je začiarkavacie políčko začiarknuté Povoliťsúborprevrátenie(Povoliť zmenu súborov), teda po vyplnení jedného súboru sa automaticky vytvorí druhý súbor, k názvu ktorého sa pripojí číslo 1, potom 2 atď., no nie vždy je vhodné pracovať s veľkým počet súborov. Ak zbierate informácie pre prenos Database Tuning Advisor, potom je lepšie nastaviť limit veľkosti súboru na 1 GB (pomocou parametra Setmaximálnesúborveľkosť(Prispôsobiť maximálnu veľkosť súboru). generál). Záznam sledovania do súboru sa najčastejšie vykonáva 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í. SQL Server Profiler štandardne spracováva údaje sledovania 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í. Tým sa zabezpečí, že sa budú zhromažďovať všetky informácie o sledovaní (ak nie je začiarknuté políčko v čase maximálneho zaťaženia servera, niektoré informácie môžu byť preskočené), 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 prispôsobiť 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ý parameter na karte generál- PovoliťTracezastaviťčas(Zahrňte čas zastavenia sledovania). Môžete určiť čas, kedy sa sledovanie automaticky vypne. Zvyčajne má zmysel vypnúť sledovanie pred spustením akýchkoľvek servisných operácií, ktoré vás z hľadiska protokolovania nezaujímajú (zálohy, 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

Operácia v prehliadači informácií o sledovaní je pomerne jednoduchá: horná časť zobrazuje udalosti, ktoré sa vyskytujú na serveri, a spodná časť poskytuje o nich podrobné informácie (napríklad kód príkazov SQL). Všimnime si niektoré možnosti dostupné v tomto okne:

q ak je tab OrganizovaťStĺpce vo vlastnostiach šablóny ste vybrali stĺpce na zoskupenie, potom môžete podľa týchto stĺpcov zoskupiť záznamy v prehliadači. Na tento účel v ponuke vyhliadka Poskytnutý príkaz (Zobraziť). Zoskupenévyhliadka(Skupinový pohľad);

q ak na rovnakej karte vo vlastnostiach šablóny do zoznamu Skupina bol umiestnený iba jeden stĺpec, potom môžete použiť ešte pohodlnejší režim zobrazenia Agregovanévyhliadka(obr.11.3). Tento režim sa aktivuje pomocou príkazu Agregovanévyhliadka z rovnakého menu vyhliadka a umožňuje vám zmeniť hodnoty zo stĺpca podľa vášho výberu na stromové uzly, ktoré môžete zbaliť a rozbaliť. Okrem toho sa pre každý z týchto uzlov automaticky vypočíta počet udalostí.

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

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

q SQL Server 2005 Profiler predstavuje novú funkciu na priradenie informácií o sledovaní k počítadlám výkonu v nástroji Performance Monitor. Ak chcete využiť túto príležitosť, potrebujete:

Definujte reláciu sledovania, počas ktorej sa musia zaznamenávať informácie o stĺpcoch Doba spustenia a EndTime;

· Spustite reláciu sledovania so záznamom informácií do súboru alebo tabuľky. Súčasne s ním zbierajte údaje z merača 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 zástupný symbol pre 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.

Sledovanie uložených procedúr je náročnejšie a menej pohodlné na prácu ako s profilerom a neposkytujú ďalšie funkcie. Preto ich nebudeme podrobne zvažovať. Tu je len zoznam takýchto uložených procedúr so stručným popisom:

q sp_trace_create- umožňuje 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ť sledovanie vytvorené uloženou procedúrou sp_trace_create definícia aktuálnej relácie;

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

Tento článok obsahuje niekoľko materiálov publikovaných v mailing listu "MS SQL Server je chúlostivá záležitosť..." a venovaných problematike sledovania účinnosti MS SQL Server, metódam zisťovania príčin hardvérových problémov a ich riešenia. Okrem toho vám bude ponúknutých niekoľko užitočných praktických odporúčaní a upozornení.

Ak váš databázový server príliš využíva I/O, môžete zmeniť nastavenie I/O Page Lock Limit operačného systému, čo môže zvýšiť efektívnu rýchlosť čítania/zápisu operačného systému na pevný disk.
Najprv vykonajte I/O benchmark pre vaše typické zaťaženie servera. Potom v regedit.exe otvorte kľúč:

HKLM \ SYSTEM \ CurrentControlSet \ Control \ SessionManager \ MemoryManagement \ IoPageLockLimit

Zmyslom vašich akcií je postupný výber hodnôt tohto kľúča na najoptimálnejšiu hodnotu z hľadiska zmien výsledkov benchmarkingu.
V tomto kľúči operačný systém načíta maximálny počet bajtov, ktoré môže použiť na I/O operácie. Predvolená hodnota je 0, čo zodpovedá 512 kB. Zvyšujte túto hodnotu v krokoch, zakaždým pridajte 512 kB (napríklad: "512", "1024" atď.) a po každej zmene porovnajte svoj systém. Zvyšovať tento parameter má zmysel len dovtedy, kým pozorujete zvýšenie priepustnosti I/O operácií, čo sa môže prejaviť znížením času stráveného štandardnými diskovými operáciami. Keď prestanete vidieť výrazné zlepšenie, vráťte sa do editora databázy Registry a odstráňte posledný prírastok.

Pozor: Existuje obmedzenie maximálnej veľkosti hodnoty tohto kľúča. Ak máte 16 MB RAM, nenastavujte IoPageLockLimit viac ako 2048 bajtov; pre 32 MB RAM neprekračujte 4096 bajtov atď.

Dôležitá poznámka:

Operácie uvedené Sergejom, ak sa použijú nesprávne alebo nesprávne, môžu viesť ku kolapsu vášho systému. Postarajte sa preto o dostupnosť záloh databázy a systému vopred, uložte si fungujúcu konfiguráciu NT a prípadné zmeny nasimulujte na testovacom mieste. Nikdy nevykonávajte viac ako jednu zmenu konfigurácie naraz.

Zdieľajte to