Monitorovanie efektívnosti MS SQL Server. Praktické odporúčania. Použitie SQL Profiler

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, ktorý sa dodáva s MS SQL Server a je určený na prezeranie všetkých udalostí, ktoré sa vyskytnú na serveri SQL alebo inými slovami, na zaznamenávanie stôp. 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, požiadaviek 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ť 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 - 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. Na ukážku úplný zoznam vlastnosti a udalosti, 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 uvidíme v sledovaní iba dopyty 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 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: 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 profilovači.


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++.

13. Pomocou ponuky "File-Save As" je možné uložiť celú stopu rôznych formátov:
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 potom sa tabuľka 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 zobrazení výsledku je žiaduce 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 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. 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.

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. Ak chcete zobraziť úplný zoznam vlastností a udalostí, 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 profilovači.

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.

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++.

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.

Dnes budeme merať výkon našej aplikácie pomocou vizuálne štúdio Nástroj na profilovanie.

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.

Školenie

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

Profilovacie metódy

Odbočme trochu od hlavnej témy článku a pouvažujme nad možnými spôsobmi 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 fungovaní aplikácie (počas profilovania). Táto metóda je ľahká, a preto v dôsledku jej práce existuje veľmi malá chyba v získaných údajoch.

V každom určitom časovom intervale sa zhromažďujú informácie o zásobníku hovorov (zásobník 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úvisiacich s využívaní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í informácie o časovaní (čase) pre každú funkciu v súbore a pre každú funkciu, ktorá sa v tomto súbore volá.

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

  • Uplynulé vrátane- celkový čas strávený vykonávaním funkcie
  • 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ý telefonovaním operačný systém a čas potrebný na vykonanie funkcií volaných cieľovou funkciou.
Súbeh
Súbeh– zhromažďuje informácie o viacvláknových aplikáciách (ako ladiť viacvláknové aplikácie nájdete v „Príručke na ladenie viacvláknových aplikácií vo Visual Studio 2010“). Metóda zhromažďuje podrobné informácie o zásobníku hovorov zakaždým, 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 má malý alebo ž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ánkami 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 budeme sa naďalej učiť, ako profilovať aplikácie.

Profilovanie metódou odberu vzoriek

Odber vzoriek je technika profilovania, ktorá pravidelne zisťuje príslušný proces na určenie aktívnej funkcie. Výsledok ukazuje, koľkokrát bola funkcia počas testovania na začiatku zásobníka hovorov.
Profilovanie
Otvorenie testovacieho projektu PeopleTrax. Nastavte konfiguráciu na Uvoľnite(Verzia ladenia obsahuje ďalšie informácie na ladenie aplikácie a bude to 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ť, toto PeopleTrax a tlačidlo Ďalej. Potom kliknite na tlačidlo Dokončiť a profilovač a naša aplikácia sa automaticky spustí. Na obrazovke vidíme program PeopleTrax. Stlačíme tlačidlo získať ľudí, čaká na dokončenie diela a exportovať dáta. Zatvoríme poznámkový blok a program a profiler vygenerujú správu.

Prehľad vygenerovaný Profilerom (*.vsp)

Analýza správy o metóde odberu vzoriek
AT Zhrnutie zobrazí graf využitia procesora počas celého času profilovania. Zoznam Horúca cesta zobrazuje vetvy hovorov, ktoré vykazovali najväčšiu aktivitu. A na zozname Funkcie vykonávajúce väčšinu individuálnej práce(ktorého názov hovorí sám za seba) - funkcie, ktoré obsadili b o Dlhší čas procesu v tele týchto funkcií.

Pohľad na zoznam Horúca cesta vidíme, že metóda PeopleNS.People.GetNames zaberá takmer posledné miesto v call brandži. Potom ho možno podrobnejšie preštudovať a zlepšiť výkon. Kliknite na PeopleNS.People.GetNames a otvára sa pred nami Detaily funkcie.

Toto okno obsahuje dve časti. Výdavkové okno poskytuje grafické znázornenie prácu funkcií a príspevok funkcie a jej volaní k počtu vybratý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 je vidieť, že číta riadky zo zdrojov aplikácie pomocou StringReader, pričom každý riadok pridáte 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. Avšak, GetNames volaná dvakrát pri každom vytvorení Osobné informácie. (Toto je znázornené žltým a červeným zvýraznením). Je zrejmé, že metódu možno ľahko optimalizovať vytvorením zoznamov iba raz na začiatku metódy.

Alternatívna verzia GetPeople je aj v kóde a teraz ho zapneme. 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, musíte opraviť chybu v projekte. Konštruktor optimalizovanej triedy nesprávne napísal názov zdrojov: potrebujete PeopleNS.Resources namiesto PeopleNS.Resource. Ak sa to nezmení, všetko padá s hroznými chybami.

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

Reštartujte profilovanie v aktuálnej relácii kliknutím Spustite s profilovaním v okne prieskumník výkonnosti. Kliknite na získať ľudí a exportovať dáta. Zatvoríme poznámkový blok a program a profiler 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 z neskoršieho Porovnanie. Vyberte si % vrátane vzoriek a aplikovať.

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

Profilovanie pomocou prístrojového vybavenia

Táto metóda je užitočná pri profilovaní I/O operácií, zápise na disk a pri komunikácii cez sieť. 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 prijaté po vložení dodatočný kód sú väčšie ako normálne 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
AT prieskumník výkonnosti vybrať Prístrojové vybavenie a kliknite na tlačidlo Spustiť profilovanie. Kliknite na položku Získať ľudí. Po nahraní ľudí počkajte 10 sekúnd a kliknite na Exportovať údaje. Zatvorte poznámkový blok a program. Profiler vygeneruje správu.
Analýza
Profiler zobrazí tento obrázok:

Nedostali sme informácie, ktoré sme chceli. Poďme filtrovať údaje. Zámerne sme čakali 10 sekúnd, aby sme odfiltrovali profilovacie údaje, ktoré práve nepotrebujeme. Označíme od 13. do konca a stlačíme Filtrujte podľa výberu. Ďalší výsledok:

Horúca cesta ukazuje, že metóda Concat zaberie veľa času (je tiež prvý v zozname funkcií s najvyššou individuálnou prácou). Kliknite na Concat zobrazíte podrobné informácie o metóde.

To je jasné PeopleTrax.Form1.ExportData je jediná metóda, ktorá volá Concat. Kliknite 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. Namiesto toho je tu 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 vedú k zničeniu stará verzia reťazec a vytvorenie upraveného reťazca. Našťastie .NET má triedu StringBuilder ktorá je navrhnutá tak, aby vykonávala danú prácu.

Projekt už používa optimalizovanú metódu StringBuilder. V projekte PeopleTrax pridajte premennú kompilácie OPTIMIZED_EXPORTDATA. Uložíme a znova spustíme profilovač a porovnáme prehľady. Hneď je jasné (a logicky jasné), že sme optimalizovali volania Concat (od 6000 do 0-krát).

Po spustení aplikácie je okom viditeľné výrazné 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 odhaliť ďalšie problémy s výkonom aplikácie.

Jedným z mojich najobľúbenejších nástrojov je SQL Server Profiler, často označovaný jednoducho ako Profiler. Tento nástroj zobrazuje údaje o ľubovoľnom počte podrobných udalostí servera SQL Server. Tieto udalosti servera je možné zobraziť v okne Vlastnosti sledovania (Obrázok 49-3) a tiež zaznamenať do súboru alebo tabuľky na neskoršiu analýzu. Filtre je možné nastaviť tak, aby zaznamenávali všetky udalosti alebo ich vybranú podmnožinu.

Obr. 49.2. AT tento príklad protokol merača zaznamená informácie

o výkone servera SQL Server v adresári C:\Perf Logs

SQL Server Profiler je možné spustiť z ponuky Nástroje v Management Studio alebo priamo z priečinka SQL Server 2005 v ponuke Štart. Ak chcete zobraziť akcie, musíte buď definovať nové sledovanie, alebo použiť existujúci súbor.

SQL Server Profiler je teraz k dispozícii s balíkom SP1 sledovať veľké množstvo údajov na veľkých počítačoch.

Okrem toho pri monitorovaní analytickej služby sa čas predtým zobrazoval v univerzálnom časovom synchronizovanom čase (UTC). Teraz pomocou miestneho systémový čas. Predtým sa úspešne reprodukované udalosti počítali nesprávne, v dôsledku čoho používateľ dostal nesprávne štatistiky. Tento problém bol vyriešený.

Definovanie novej stopy

Keď sa vytvorí nové sledovanie (buď pomocou príkazu ponuky Súbor^Nová stopa alebo tlačidla na paneli nástrojov Nová stopa), vytvorí sa aj nové pripojenie k serveru SQL Server a otvorí sa dialógové okno Vlastnosti stopy (Obrázok 49-4). Na karte Všeobecné tohto okna sa konfiguruje sledovanie (najmä názov, umiestnenie súboru atď.) a na karte Výber udalostí sa definujú udalosti, údaje a filtre, ktoré sa majú zapisovať. Ak je spustené sledovanie, tieto možnosti je možné zobraziť, ale nie zmeniť. Konfiguráciu sledovania je možné uložiť ako šablónu, aby sa uľahčilo vytváranie nových stôp v budúcnosti.

Ryža. 49.4. Karta Events Selection okna Trace Properties vám umožňuje vybrať udalosti sledované pomôckou Profiler.

Sledovanie je možné prezerať v reálnom čase, ale údaje možno súčasne zapisovať do súboru alebo tabuľky SQL Servera. To je užitočné na neskôr intelektuálna analýza, porovnanie s údajmi počítadla monitora systému alebo pre import do Database Engine Tuning Advisor.

Keď sa čítania zapisujú do súboru, sú zreťazené do 128 kB reťazcov, aby sa zlepšil výkon; podobne pri zápise do tabuľky sa údaje zoskupujú do viacerých riadkov.

Ak chcete uložiť údaje zachytené Profilerom na neskoršiu analýzu, použite vysokovýkonný súborová metóda, ako aj sledovanie servera (o tom si povieme neskôr). Ak chcete analyzovať údaje pomocou T-SQL inštrukcie, použite presne rovnaký prístup, ale po dokončení relácie sledovania otvorte výsledný súbor v nástroji Profiler a z ponuky vyberte príkaz File^Save As^Table.

Výber udalosti

Záložka Events Selection definuje akcie vykonávané databázovým serverom, ktoré budú protokolované pomocným programom Profiler. Podobne ako monitor výkonu môže Profiler sledovať mnoho kľúčových udalostí servera SQL Server. Na zjednodušenie nastavení výberu môžete použiť predvolené šablóny.

I Udalosť SQL Batch Completed je založená na vykonávaní dávok T-SQL v

SVS ako celok (balíky oddelené terminátormi), nie ich jednotlivé inštrukcie.

| * Na základe toho Profiler bez ohľadu na to registruje údaje len o jednej udalosti

Simo na dĺžke balenia. Na zaznamenanie vykonania jednotlivých pokynov

DML, použite udalosť SQL Statement Complete.

Nie všetky udalosti možno použiť na reprodukciu stopy. Napríklad udalosť SQL Batch Start je možné prehrať, ale udalosť SQL Batch Complete nie.

V závislosti od udalostí sú dostupné rôzne údaje na sledovanie. Hoci sa stĺpec s údajmi SPID javí ako voliteľný, tento dojem je zavádzajúci – je povinný.

Filtrovanie udalostí

Program Profiler pre vás dokáže zhromaždiť toľko informácií, že bez mihnutia oka dokáže zaplniť diskovú jednotku. Našťastie, filter poskytnutý programom (obr. 49.5) vám pomôže obmedziť toto pole len na údaje, ktoré vás zaujímajú.

Ryža. 49.6. SQL Server Profiler je schopný integrovať údaje monitorovania výkonu a udržiavať ich v synchronizácii so sledovanými udalosťami

Pomocou sledovania SQL

SQL Profiler sa zvyčajne používa interaktívne a postačuje na prerušovaný zber údajov. Dlhé stopy však môžu ľahko nahromadiť státisíce záznamov, čo môže spôsobiť veľmi špecifické problémy na pracovnej stanici, na ktorej prebieha sledovanie. Riešením je vytvorenie protokolu sledovania priamo na serveri. Takéto sledovanie spôsobí malé dodatočné zaťaženie servera; v tomto prípade budú súbory zapísané v blokoch po 128 kB.

AT priemyselné systémy sledovanie na strane servera, zápis údajov do súboru na serveri je najlepšia cesta zber informácií

o výkone pri minimalizácii dodatočného zaťaženia servera.

Sledovanie, ktoré beží na serveri, možno definovať a implementovať pomocou sady systémových uložených procedúr. Kód môžete napísať sami alebo použiť program SQL Server Profiler.

Po nakonfigurovaní a otestovaní sledovania v SQL Server Profiler vyberte z ponuky Súbor^Export^Definícia sledovania^Pre SQL Server 2005, čím sa vygeneruje skript T-SQL schopný vykonávať sledovanie na strane servera.

I Ak chcete zistiť, ktoré sledovania bežia na serveri, opýtajte sa

SVS k nášmu manažérskemu pohľadu na systraces. Keď sa pozriete na I * výsledky tohto dotazu, uvidíte ďalšie stopy. Prvé * číslo má vždy takzvanú predvolenú stopu, ktorá zhromažďuje údaje pre denníky SQL Servera - nemožno ju zastaviť.

Ak chcete zastaviť sledovanie servera, použite systémovú uloženú procedúru sp_trace_setstatus. Jeho prvý argument (traceid) je identifikátor sledovania a druhý špecifikuje povahu akcie. Akčný parameter nula spôsobí zastavenie sledovania, jeden ho spustí a dva ho zatvorí a vymaže. Nasledujúci kód zastaví sledovanie číslo 2.

SQL Profiler- softvérový nástroj Používa sa na sledovanie servera SQL Server. "Trace" - relácia zhromažďovania informácií o prevádzke SQL Server 2008

Hlavný účel:

SQL Profiler používajú správcovia na:

analýza aplikácie;

určenie optimality požiadaviek odoslaných na server;

· identifikácia príkazov Transact-SQL, ktoré spôsobujú chybu;

zhromažďovanie informácií o aktivite používateľov počas dlhého časového obdobia;

sledovanie prevádzky servera v reálnom čase.

Nové príležitosti:

a. Profilovanie analytických služieb;

b. profilovanie udalostí integračných služieb;

c. schopnosť zaznamenávať hodnoty počítadla z Performance Monitor pri zaznamenávaní informácií o vykonaní príkazu;

d. Do nástroja Profiler bolo pridaných mnoho nových udalostí a zdrojov informácií, ktoré je možné vybrať na zápis do súboru sledovania;

f. schopnosť zoskupovať udalosti v okne profilovača.

Práca s SQL Server Profiler

1. Spustite SQL Server Profiler - z ponuky Štart Programy SQL Server 2008 Výkon Nástroje SQL Server Profiler.

2. V okne, ktoré sa otvorí, v ponuke súbor vybrať Nová stopa a pripojiť sa k SQL Server Server 2008, ktorý budeme monitorovať.

3. V okne nakonfigurujte nastavenia relácie Vlastnosti stopy, ktorý sa automaticky otvorí pred začiatkom relácie sledovania (pozri obrázok 8.1).

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

a. Na karte generál vyberte zo zoznamu Použite šablónu najvhodnejšia šablóna. Šablóna sa vyberá pomocou ponuky súbor à Šablóny v SQL Server Profiler. Na začiatku máte k dispozícii osem šablón:

1). štandardné (predvolené)- predvolená šablóna, ktorá vám umožňuje sledovať všetky uložené procedúry a príkazy Transact-SQL, ktoré sú spustené na vykonanie;

2). SP_Counts- zhromažďovanie informácií o uložených procedúrach a funkciách spustených na vykonanie, zoradených podľa názvu;

3). TSQL- zhromažďovanie informácií o všetkých príkazoch Transact-SQL spustených na vykonanie na serveri s uvedením identifikátora používateľských procesov a času spustenia;

4). TSQL_Duration- podobne ako v predchádzajúcej šablóne, ale namiesto informácie o čase spustenia príkazu TSQL sa zaznamenáva čas, ktorý bol potrebný na jeho vykonanie;

5). TSQL_Grouped- okrem informácií o kóde príkazu Transact-SQL a čase jeho spustenia sa zaznamenáva aj informácia o názve aplikácie, účtu používateľ v OS a používateľský účet, ktorý bol použitý na pripojenie;



6). TSQL_Replay- zaznamenávanie najpodrobnejších informácií o vykonaných príkazoch Transact-SQL;

7). TSQL_SPs- okrem zaznamenávania informácie o začiatku spustenia uloženej procedúry (SP:Starting) sa zaznamenáva informácia o vykonaní každého z príkazov uloženej procedúry (SP:StmtStarting);

8). Tuning- používa sa na zhromažďovanie informácií požadovaných Poradcom pre ladenie databázy.

b. Na karte generál ak je potrebné špecifikovať miesto, kde sa ukladajú informácie o sledovaní:

jeden). Informácie o sledovaní možno zaprotokolovať do súboru (štandardne 5 MB):

· parameter Povoliť prevrátenie súboru určuje, či vyplnením jedného súboru sa automaticky vytvorí ďalší. Názov nasledujúceho súboru bude rovnaký ako názov predchádzajúceho, ale k jeho názvu sa pridá číslo (1, 2, 3 atď.)

· parameter Server spracováva údaje sledovania možno použiť na zvýšenie spoľahlivosti zaznamenávania informácií o sledovaní. Po začiarknutí tohto políčka server spracuje informácie o sledovaní.

2). Informácie o sledovaní môžu byť uložené v tabuľke servera SQL Server. Automaticky sa vytvorí tabuľka s požadovanou sadou stĺpcov.

3). Pomocou parametra Povoliť čas zastavenia sledovania môžete určiť čas, kedy sa sledovanie automaticky vypne.

c. Na karte Výber udalosti určiť parametre pre zber informácií. 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ť. Ak chcete zobraziť všetky riadky a stĺpce, musíte začiarknuť políčka Zobraziť všetky udalosti a Zobraziť všetky stĺpce.

jeden). s tlačidlom Stĺpcové filtre(Stĺpcové filtre) nakonfigurujte filtre na zhromažďovanie potrebných informácií (sledovanie akcií vykonaných v konkrétnej databáze alebo konkrétnou aplikáciou alebo konkrétnym používateľom) - Páči sa mi to alebo Nie ako;

2). pomocou tlačidla Usporiadať stĺpce(Organize Columns) konfiguruje poradie stĺpcov na zobrazenie alebo záznam v profileri s možnosťou zoskupovania údajov - sekcia Group.

4. Po nastavení všetkých parametrov sledovania kliknite na tlačidlo Bežať(Štart) (Pozri obrázok 8.2)

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

V hornej časti okna sa zobrazujú udalosti vyskytujúce sa na serveri a v dolnej časti detailné informácie pre každú udalosť (napríklad kód príkazu SQL).

Funkcie dostupné v okne sledovania:

1. Ak je na karte Usporiadať stĺpce vo vlastnostiach šablóny ste vybrali stĺpce na zoskupenie, môžete zoskupiť záznamy podľa týchto stĺpcov v okne zobrazenia. Na tento účel slúži menu vyhliadka poskytnutý príkaz Skupinové zobrazenie;

2. Ak je v zozname skupina bol umiestnený iba jeden stĺpec, potom máte možnosť použiť režim zobrazenia Súhrnné zobrazenie(pozri obrázok 8.3). Tento režim sa aktivuje príkazom Súhrnné zobrazenie z rovnakého menu vyhliadka.

Ryža. 8.3. Režim zobrazenia Súhrnné zobrazenie

3. V profileri môžete otvárať udalosti uložené v súboroch sledovania a tabuľkách. Zaprotokolované operácie je tiež možné opakovať pomocou menu Prehrať znova;

4. Informácie o sledovaní môžete prepojiť s počítadlami výkonu monitora systému. Pre to:

definujte reláciu sledovania, počas ktorej sa musia zapisovať 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. Zároveň s ním zbierajte do súboru protokol odpočtov meračov monitor výkonu;

OTVORENÉ zhromaždené informácie zo súboru sledovania v profileri a potom použite príkaz Importujte údaje o výkonnosti z menu súbor.