Spremljanje učinkovitosti MS SQL Server. Praktična priporočila. Uporaba SQL Profiler (profiler)

Pri svojem delu se nemalokrat srečamo s situacijo, ko je določena zahteva počasna, iz besedila zahteve pa ni razvidnih očitnih težav. Običajno je v tem primeru potrebno problem raziskati na globlji ravni. Praviloma je treba pogledati besedilo SQL poizvedbe in njen načrt, pri čemer nam pomaga SQLProfiler.

Kaj je SQL Profiler in zakaj je potreben?

SQLProfiler je program, ki je priložen MS SQL Server in je zasnovan tako, da pregleduje vse dogodke, ki se zgodijo v strežniku SQL ali, z drugimi besedami, beleži sled. Zakaj programer 1C potrebuje SQLProfiler? Vsaj zato, da bi dobili besedilo poizvedbe v SQL in videli njen načrt. Seveda je to mogoče storiti s pomočjo tehnološke revije, vendar to zahteva nekaj spretnosti, načrt v tehnični reviji pa ni tako lep in berljiv. V profilerju si lahko ogledate ne samo besedilni, ampak tudi grafični načrt izvajanja poizvedbe, kar je po mojem mnenju veliko bolj priročno. Profiler lahko uporabite tudi za določanje: zahtev, ki so daljše od določenega časa, zahtev za določeno tabelo, ki čakajo na zaklepanje, časovnih omejitev zastoja in še veliko več ...

Analiziranje poizvedb s SQL Profilerjem

Profiler se najpogosteje uporablja za analizo poizvedb. Praviloma nam ni treba slediti vsem poizvedbam, pogosto moramo videti, kako je določena poizvedba v jeziku 1C prevedena v SQL in videti njen izvedbeni načrt. To bomo na primer morda potrebovali, da ugotovimo, zakaj se poizvedba izvaja počasi, ali pa smo napisali veliko poizvedbo in se želimo prepričati, da telo poizvedbe SQL ne vsebuje povezav s podpoizvedbo. Če želite zahtevo ujeti v sled, naredite naslednje:

1. Zagon SQL Profiler Start - Vsi programi - Microsoft SQL Server 2008 R2 - Orodja za produktivnost - SQLProfiler
2. Ustvari novo datoteko sledi - Ustvari sled (Ctrl+N)
3. Določite strežnik DBMS, na katerem se nahaja naša baza podatkov, in kliknite »Poveži«.

Seveda vam nič ne preprečuje, da bi sledili strežniku DBMS, ki se nahaja na drugem računalniku. 4. V oknu »Trace Properties«, ki se prikaže, pojdite na drugi zavihek »Select Events«

5. Sedaj moramo določiti dogodke in lastnosti teh dogodkov, ki jih želimo videti v sledenju. Potrebujemo poizvedbe in načrte poizvedb, zato moramo omogočiti ustrezne dogodke. Za prikaz celoten seznam lastnosti in dogodki, omogočite zastavici »Prikaži vse stolpce« in »Prikaži vse dogodke«. Nato morate izbrati samo dogodke, prikazane na spodnji sliki, vse druge dogodke pa morate onemogočiti.


Opis dogodka: ShowplanStatisticsProfile- načrt besedila izpolni zahtevo.
ShowplanXMLStatisticsProfile - grafični izvedbeni načrt poizvedbe.
RPC: Completed - besedilo zahteve, če se izvaja kot procedura (če se izvaja zahteva 1C s parametri).
SQL:BatchCompleted - besedilo poizvedbe, če se izvaja kot običajna poizvedba (če je bila poizvedba 1C izvedena brez parametrov).

6. Zdaj morate nastaviti filter za dogodke. Če tega ne storite, bomo videli poizvedbe za vse baze podatkov, ki se nahajajo na tem strežniku DBMS. Kliknite gumb »Filtri stolpcev« in določite filter po imenu baze podatkov

Zdaj bomo v sledenju videli le zahteve za bazo podatkov “TestBase_8_2”. Po želji lahko nastavite filter na drugih poljih, najbolj zanimiva med njimi so: Trajanje (Trajanje), TextData (običajno besedilo zahteve) in. RowCounts (število vrstic, ki jih vrne zahteva).

Na primer, če moram ujeti vse zahteve za tabelo »_InfoRg4312«, ki trajajo več kot 3 sekunde v bazi podatkov »TestBase_8_2«, potem naredim:
a) Filtrirajte po zbirki podatkov, primer prikazan zgoraj
b) Filtriraj po trajanju v milisekundah.

C) Filtrirajte po besedilu zahteve


Tukaj določimo masko. Če morate slediti poizvedbam, ki dostopajo do več tabel, ustvarite več elementov v razdelku »Podobno«. Vsi pogoji filtra delujejo skupaj.

7. Zdaj lahko zaženete sledenje. Kliknite »Zaženi«, po katerem začne sledenje delovati in vidite dogodke, ki ste jih konfigurirali za prikaz in spadajo pod vaše filtre. Za nadzor sledenja lahko uporabite gumbe v ukazni vrstici.


Od leve proti desni: Eraser - počisti okno za sledenje, Start - začne sledenje, Pause - začasno ustavi sledenje, klik na Start nadaljuje sledenje, Stop - ustavi sledenje

8. Samo okno za sledenje je sestavljeno iz dveh delov. Na vrhu so dogodki in lastnosti dogodkov. Spodnji del prikazuje različne informacije glede na vrsto dogodkov. V našem primeru bo tukaj prikazano besedilo zahteve ali njen načrt.

9. Izvedimo zahtevo v konzoli za poizvedbe 1C in poglejmo, kako se odraža v profilerju.


Iz sledi je razvidno, da je bilo prošenj več in le ena je bila naša. Druge zahteve so storitvene zahteve.

10. Iz lastnosti dogodkov lahko razberete: koliko sekund je bila poizvedba izvedena (Duration), koliko logičnih branj je bilo (Reads), koliko vrstic je poizvedba vrnila kot rezultat (RowCounts) itd. V mojem primeru se je poizvedba izvajala 2 milisekundi, opravila 4 logična branja in vrnila 1 vrstico.

11. Če gremo en dogodek navzgor, lahko vidimo načrt poizvedbe grafični obliki.
Kot je razvidno iz načrta, se iskanje izvaja po indeksu po ceni, čeprav tega načrta ne moremo imenovati idealnega, ker indeks ne pokriva, polja s kodo in imeni se pridobijo z uporabo KeyLookupa, kar traja 50 % časa.


Grafični načrt lahko shranite s pomočjo kontekstnega menija ločena datoteka s pripono *.SQLPlan in ga odprite v profilerju na drugem računalniku ali z uporabo naprednejšega programa SQL Sentry Plan Explorer.

12. Če gremo še višje, bomo videli isti načrt poizvedbe, vendar v besedilni obliki. Prav ta načrt je prikazan v TZ, TsUP in drugih orodjih za spremljanje uspešnosti 1C. Za analizo priporočam uporabo naprednega urejevalnik besedil osvetljeno od zadaj, kot je Notepad++.

13. Uporabljam meni »Datoteka-Shrani kot«, vanj je mogoče shraniti celotno sled različne formate:
a) V formatu samega profilerja, tj. s končnico *.trc
b) V formatu xml
c) Iz sledi lahko naredite predlogo. Glej naslednjo točko.
d) Sled lahko shranite kot tabelo zbirke podatkov. Priročen način, če moramo najti na primer najpočasnejšo zahtevo v celotnem sledenju ali izbrati zahteve po nekem parametru. Datoteka - Shrani kot - Tabela sledenja - Izberite strežnik DBMS in se povežite z njim. Nato morate izbrati bazo podatkov na navedenem strežniku in določiti ime tabele, v katero bo shranjena sled. Izberete lahko obstoječo tabelo ali pa napišete novo ime, nato pa se bo tabela samodejno ustvarila v izbrani bazi podatkov.

Upoštevati je treba, da je Trajanje v tabeli shranjeno v milijoninkah sekunde in pri prikazu rezultata je priporočljivo vrednost pretvoriti v milisekunde. V tabelo je dodan tudi stolpec RowNumber, ki prikazuje številko te vrstice v sledenju.

14. Če morate pogosto uporabljati profiler za analizo zahtev, bo nastavitev potrebnih filtrov in dogodkov hitro postala dolgočasna in vam bo vzela tudi veliko časa. Na pomoč priskočijo predloge sledi, kjer določimo filtre, ki jih potrebujemo, in vrstni red stolpcev, nato pa preprosto izberemo to predlogo pri ustvarjanju nove sledi. Za izdelavo predloge uporabite meni Datoteka - Predloge - Nova predloga

Na prvem zavihku je vse preprosto. Označimo vrsto strežnika, ime predloge in po potrebi nastavimo zastavico za privzeto uporabo te predloge. Na drugem zavihku izberemo dogodke in konfiguriramo filtre, kot je že prikazano zgoraj. Priporočam tudi prilagoditev vrstnega reda stolpcev v sledenju, prihrani čas pri analizi poizvedb. Na primer, bolj priročno se mi zdi uporaba naslednjega vrstnega reda.

Zdaj lahko pri ustvarjanju nove sledi preprosto določite zahtevano predlogo, po kateri se bodo vsi filtri in dogodki samodejno izpolnili na drugem zavihku.

Seveda tukaj niso prikazani vsi načini uporabe tega čudovitega orodja; če bo prišlo do zanimanja občinstva, bo v prihodnosti mogoče razširiti zbirko člankov na to temo.

Pri svojem delu se nemalokrat srečamo s situacijo, ko je določena zahteva počasna, iz besedila zahteve pa ni razvidnih očitnih težav. Običajno je v tem primeru potrebno problem raziskati na globlji ravni. Praviloma je treba pogledati besedilo SQL poizvedbe in njen načrt, pri čemer nam pomaga SQL Profiler.

Kaj je SQL Profiler in zakaj je potreben?

SQL Profiler je program, ki je priložen MS SQL Serverju in je namenjen pregledovanju vseh dogodkov, ki se zgodijo v SQL strežniku ali z drugimi besedami, beleženju sledi.

Zakaj programer 1C potrebuje SQL Profiler?

Vsaj zato, da bi dobili besedilo poizvedbe v SQL in videli njen načrt. Seveda je to mogoče storiti s pomočjo tehnološke revije, vendar to zahteva nekaj spretnosti, načrt v tehnični reviji pa ni tako lep in berljiv.

V profilerju si lahko ogledate ne le besedilni, ampak tudi grafični načrt izvajanja poizvedbe, kar je po mojem mnenju veliko bolj priročno.

Profiler lahko uporabite tudi za določitev:

zahteva dlje od določenega časa

poizvedbe proti določeni tabeli

čaka na blokado

časovne omejitve

zastoj

in veliko več…

Analiziranje poizvedb s SQL Profilerjem

Profiler se najpogosteje uporablja za analizo poizvedb. Praviloma nam ni treba slediti vsem poizvedbam, pogosto moramo videti, kako je določena poizvedba v jeziku 1C prevedena v SQL in videti njen izvedbeni načrt. Na primer, to bomo morda potrebovali, da ugotovimo, zakaj se poizvedba izvaja počasi, ali pa smo morda napisali veliko poizvedbo in se želimo prepričati, da telo poizvedbe SQL ne vsebuje povezav s podpoizvedbo.

Če želite zahtevo ujeti v sled, naredite naslednje:

1. Zaženite SQL Profiler

Start - Vsi programi - Microsoft SQL Server 2008 R2 - Orodja za produktivnost - SQL Profiler

2. Ustvarite novo sled

Datoteka – Ustvari sled (Ctrl+N)
3. Določite strežnik DBMS, na katerem se nahaja naša baza podatkov, in kliknite »Poveži«.

Seveda vam nič ne preprečuje, da bi sledili strežniku DBMS, ki se nahaja na drugem računalniku.

4. V oknu »Trace Properties«, ki se prikaže, pojdite na drugi zavihek »Select Events«

5. Sedaj moramo določiti dogodke in lastnosti teh dogodkov, ki jih želimo videti v sledenju.

Potrebujemo poizvedbe in načrte poizvedb, zato moramo omogočiti ustrezne dogodke. Za prikaz celotnega seznama lastnosti in dogodkov omogočite zastavici »Prikaži vse stolpce« in »Prikaži vse dogodke«.

Opis dogodkov:

ShowplanStatisticsProfile – načrt izvajanja besedilne poizvedbe

ShowplanXMLStatisticsProfile – grafični izvedbeni načrt poizvedbe

RPC:Completed – besedilo zahteve, če se izvaja kot procedura (če se izvaja zahteva 1C s parametri).

SQL:BatchCompleted – besedilo poizvedbe, če se izvaja kot običajna poizvedba (če je bila poizvedba 1C izvedena brez parametrov).

6. Zdaj morate nastaviti filter za dogodke. Če tega ne storite, bomo videli poizvedbe za vse baze podatkov, ki se nahajajo na tem strežniku DBMS.

Kliknite gumb »Filtri stolpcev« in določite filter po imenu baze podatkov

Zdaj bomo v sledenju videli samo poizvedbe v bazo podatkov »TestBase_8_2«.

Po želji lahko filtrirate po drugih poljih, med katerimi so najbolj zanimiva: Duration, TextData (običajno besedilo zahteve) in RowCounts (število vrstic, ki jih vrne zahteva).

Na primer, če moram ujeti vse zahteve za tabelo »_InfoRg4312«, ki trajajo več kot 3 sekunde v bazi podatkov »TestBase_8_2«, potem naredim:

a) Filtrirajte po zbirki podatkov, primer prikazan zgoraj

b) Filtriraj po trajanju v milisekundah.

c) Filtrirajte po besedilu zahteve

Tukaj določimo masko. Če morate slediti poizvedbam, ki dostopajo do več tabel, ustvarite več elementov v razdelku »Podobno«. Vsi pogoji filtra delujejo skupaj.

7. Zdaj lahko zaženete sledenje. Kliknite »Zaženi«, po katerem začne sledenje delovati in lahko si ogledate dogodke, ki ste jih konfigurirali za prikaz in spadajo pod vaše filtre.

Za nadzor sledenja lahko uporabite gumbe v ukazni vrstici.

Od leve proti desni:

Radirka – počisti okno sledi

Start – začne sledenje

Premor – začasno ustavi sledenje; ko kliknete Start, se sledenje nadaljuje

Stop – ustavi sledenje

8. Samo okno za sledenje je sestavljeno iz dveh delov. Na vrhu so dogodki in lastnosti dogodkov.

Spodnji del prikazuje različne informacije glede na vrsto dogodkov. V našem primeru bo tukaj prikazano besedilo zahteve ali njen načrt.

9. Izvedimo zahtevo v konzoli za poizvedbe 1C in poglejmo, kako se odraža v profilerju.

Iz sledi je razvidno, da je bilo prošenj več in le ena je bila naša. Druge zahteve so storitvene zahteve.

10. Iz lastnosti dogodkov lahko razberete: koliko sekund je bila poizvedba izvedena (Duration), koliko logičnih branj je bilo (Reads), koliko vrstic je poizvedba vrnila kot rezultat (RowCounts) itd.

V mojem primeru se je poizvedba izvajala 2 milisekundi, opravila 4 logična branja in vrnila 1 vrstico.

11. Če gremo en dogodek navzgor, lahko vidimo načrt poizvedbe v grafični obliki.

Kot je razvidno iz načrta, se iskanje izvaja po indeksu po ceni, čeprav tega načrta ne moremo imenovati idealnega, ker indeks ne pokriva, se polja s kodo in imeni pridobijo s pomočjo KeyLookupa, kar traja 50 % časa.

S pomočjo kontekstnega menija lahko grafični načrt shranite kot ločeno datoteko s pripono *.SQLPlan in ga odprete v profilerju na drugem računalniku ali z uporabo naprednejšega programa SQL Sentry Plan Explorer.

12. Če gremo še višje, bomo videli isti načrt poizvedbe, vendar v besedilni obliki.

Prav ta načrt je prikazan v TZ, TsUP in drugih orodjih za spremljanje uspešnosti 1C. Za analizo priporočam uporabo naprednega urejevalnika besedil z osvetlitvijo ozadja, kot je Notepad++.

a) V formatu samega profilerja, tj. s končnico *.trc

b) V formatu xml

c) Iz sledi lahko naredite predlogo. Glej naslednjo točko.

Nato morate izbrati bazo podatkov na navedenem strežniku in določiti ime tabele, v katero bo shranjena sled. Izberete lahko obstoječo tabelo ali pa napišete novo ime, nato pa bo tabela samodejno ustvarjena v izbrani bazi podatkov.

Upoštevati je treba, da je Trajanje v tabeli shranjeno v milijoninkah sekunde in pri prikazu rezultata je priporočljivo vrednost pretvoriti v milisekunde. V tabelo je dodan tudi stolpec RowNumber, ki prikazuje številko te vrstice v sledenju.

14. Če morate pogosto uporabljati profiler za analizo zahtev, bo nastavitev potrebnih filtrov in dogodkov hitro postala dolgočasna in vam bo vzela tudi veliko časa.

Na pomoč priskočijo predloge sledi, kjer določimo filtre, ki jih potrebujemo, in vrstni red stolpcev, nato pa preprosto izberemo to predlogo pri ustvarjanju nove sledi.

Za izdelavo predloge uporabite meni Datoteka – Predloge – Nova predloga

Na prvem zavihku je vse preprosto. Označimo vrsto strežnika, ime predloge in po potrebi nastavimo zastavico za privzeto uporabo te predloge.

Na drugem zavihku izberemo dogodke in konfiguriramo filtre, kot je že prikazano zgoraj.

Zdaj lahko pri ustvarjanju nove sledi preprosto določite zahtevano predlogo, po kateri se bodo vsi filtri in dogodki samodejno izpolnili na drugem zavihku.

Seveda tukaj niso prikazani vsi načini uporabe tega čudovitega orodja; mislim, da bom v prihodnosti dodal zbirko člankov na to temo.

Če imate še vedno vprašanja o uporabi SQL Profilerja, jih postavite v komentarjih, z veseljem vam bom odgovoril.

Danes bomo merili zmogljivost naše aplikacije z uporabo Visual Studio Orodje za profiliranje.

Orodje za profiliranje Visual Studio razvijalcem omogoča merjenje in vrednotenje delovanja aplikacij in kode. Ta orodja so v celoti vgrajena v IDE, da razvijalcu omogočijo brezhiben nadzor.
V tej vadnici bomo profilirali aplikacijo korak za korakom PeopleTrax uporabo Vzorčenje in Instrumentacija Tehnike profiliranja za prepoznavanje težav pri delovanju aplikacije.

Veliko slik.

Priprava

Za delo s tem vodnikom boste potrebovali:
  • Microsoft Visual Studio 2010
  • Povprečno znanje jezika C#
  • Kopijo testne aplikacije PeopleTrax lahko prenesete iz galerije kod MSDN

Metode profiliranja

Odmaknimo se malo od glavne teme članka in razmislimo o možnih metodah profiliranja. To poglavje lahko preskočite; uporabljene metode profiliranja bodo na kratko opisane pred uporabo.
Vzorčenje
Vzorčenje— zbira statistične podatke o delovanju aplikacije (med profiliranjem). Ta metoda je lahka, zato je zaradi njenega delovanja zelo malo napak v pridobljenih podatkih.

V vsakem določenem časovnem intervalu se zbirajo informacije o skladu klicev. Na podlagi teh podatkov se izračuna produktivnost. Uporablja se za začetno profiliranje in za prepoznavanje težav, povezanih z uporabo procesorja.

Instrumentacija
Instrumentacija— zbira podrobne informacije o času delovanja vsake klicane funkcije. Uporablja se za merjenje zmogljivosti V/I operacij.

Metoda vdela svojo kodo v binarno datoteko, ki beleži informacije o času za vsako funkcijo v datoteki in za vsako funkcijo, ki je v njej klicana.

Poročilo vsebuje 4 vrednosti za zagotavljanje pretečenega časa:

  • Preteklo vključno- skupni čas opravljanja funkcije
  • Aplikacija vključuje- čas, porabljen za izvajanje funkcije, razen časa klicev v operacijski sistem.
  • Pretekla ekskluziva- čas, porabljen za izvajanje kode v telesu. Čas, porabljen za funkcije, ki jih kliče ciljna funkcija.
  • Ekskluzivna aplikacija- čas, porabljen za izvajanje kode v telesu. Odpravlja čas, porabljen za klice operacijski sistem in čas, porabljen za izvajanje funkcij, ki jih kliče ciljna funkcija.
Sočasnost
Sočasnost– zbira informacije o večnitnih aplikacijah (za odpravljanje napak večnitnih aplikacij glejte »Vodnik za odpravljanje napak večnitnih aplikacij v Visual Studio 2010«). Metoda zbira podrobne informacije o skladu klicev, kadar koli so konkurenčne niti prisiljene čakati na dostop do vira.
.NET pomnilnik
.NET pomnilnik- Profiler zbira informacije o vrsti, velikosti in številu predmetov, ki so bili ustvarjeni v distribuciji ali jih je uničil zbiralnik smeti. Profiliranje pomnilnika skoraj ne vpliva na delovanje aplikacije kot celote.
Interakcija stopnje
Interakcija stopnje– v datoteko za profiliranje doda informacije o sinhronih klicih ADO.NET med stranjo ASP.NET ali druge aplikacije in SQL strežnik. Podatki vključujejo število in čas klicev ter najdaljši in najkrajši čas.

S tem smo zaključili našo obravnavo metod profiliranja in nadaljevali se bomo z učenjem profiliranja aplikacij.

Profiliranje z metodo vzorčenja

Vzorčenje je tehnika profiliranja, ki redno anketira zadevni proces za določitev aktivne funkcije. Rezultat prikazuje, kolikokrat je bila funkcija med testiranjem na začetku klicnega sklada.
Profiliranje
Odprite testni projekt PeopleTrax. Nastavite konfiguracijo na Sprostitev(V različico za odpravljanje napak so vgrajene dodatne informacije za odpravljanje napak v aplikaciji in bodo slabo vplivale na točnost rezultatov profiliranja).

Na jedilniku Analizirajte kliknite na Zaženi čarovnika za zmogljivost.

V tem koraku morate izbrati način profiliranja. Izberite Vzorčenje procesorja (priporočeno) in kliknite Naprej.

Izberemo, katero aplikacijo bomo profilirali, to je PeopleTrax in gumb Naprej. Nato kliknite Dokončaj in profiler ter naša aplikacija se bosta samodejno zagnala. Na zaslonu vidimo program PeopleTrax. pritisni gumb Get People, počakajte, da se delo konča in Izvoz podatkov. Zaprite beležnico in program ter profiler bosta ustvarila poročilo.

Profiler je ustvaril poročilo (*.vsp)

Analiza poročila o metodi vzorčenja
IN Povzetek graf uporabe procesorja je prikazan skozi čas profiliranja. Seznam Vroča pot prikazuje niti klicev, ki so pokazale največ aktivnosti. In na seznamu Funkcije, ki opravljajo večino individualnega dela(katere ime govori samo zase) - funkcije, ki so zasedle b O daljši čas procesa v telesu teh funkcij.

Gledam seznam Vroča pot vidimo, da metoda PeopleNS.People.GetNames zaseda skoraj zadnje mesto v temi izzivov. Nato ga je mogoče natančneje preučiti, da bi izboljšali učinkovitost. Kliknite na PeopleNS.People.GetNames in se odpre pred nami Podrobnosti funkcije.

To okno je sestavljeno iz dveh delov. Okno porabe zagotavlja grafični prikaz kako delujejo funkcije ter prispevek funkcije in njenih klicateljev k številu primerkov, ki so bili vzorčeni. Zadevno funkcijo lahko spremenite s klikom nanjo z miško.

Pogled funkcijske kode prikaže kodo metode, ko je na voljo, in označi najdražje vrstice v izbrani metodi. Ko je izbrana metoda GetNames lahko vidite, da bere nize iz virov aplikacije z uporabo StringReader, dodajanje vsake vrstice v ArrayList. Ni očitnih načinov za izboljšanje tega dela.

Ker PeopleNS.People.GetPeople edini, ki kliče GetNames– pritisnite GetPeople. Ta metoda se vrne ArrayList predmetov PersonInformationNS.PersonInformation z imeni ljudi in podjetij, ki jih je vrnila metoda GetNames. Kljub temu, GetNames dvakrat poklican vsakič, ko je ustvarjen Informacije o osebi. (To je prikazano z rumeno in rdečo osvetlitvijo). Očitno lahko metodo preprosto optimizirate tako, da ustvarite sezname samo enkrat na začetku metode.

Alternativna različica GetPeople je tudi v kodi in ga bomo zdaj omogočili. Če želite to narediti, morate določiti OPTIMIZED_GETPEOPLE kot simbol pogojne kompilacije v oknu z lastnostmi projekta Ljudje in PeopleTrax. In ja, če želite ponoviti moje poskuse, morate popraviti napako v projektu. V optimiziranem konstruktorju razreda ime virov ni pravilno zapisano: potrebujete PeopleNS.Resources skupaj z PeopleNS.Resource. Če se to ne spremeni, se bo vse končalo s strašnimi napakami.

Optimizirana metoda bo nadomestila staro pri naslednji gradnji.

Znova zaženite profiliranje v trenutni seji s klikom Zagon s profiliranjem v oknu Performance Explorer. Kliknite na Get People in Izvoz podatkov. Zaprite beležnico in program ter profiler bosta ustvarila novo poročilo.

Če želite primerjati dve poročili, izberite obe in RMB Primerjajte poročila o uspešnosti. Delta stolpec prikazuje razliko v zmogljivosti različice Izhodišče od kasneje Primerjava. Izberite % vključujočih vzorcev in Uporabi.

Kot lahko vidite, je povečanje zmogljivosti opazno s prostim očesom

Profiliranje z instrumentalno metodo

Ta metoda je uporabna za profiliranje V/I, pisanje na disk in omrežne komunikacije. Ta metoda zagotavlja več informacij kot prejšnja, vendar povzroča več stroškov. Binarne datoteke, pridobljene po vstavitvi dodatno kodo so večji od običajnih in niso namenjeni uvajanju.

Tokrat se bomo osredotočili na našo analizo izvoza podatkov, pri katerem se seznam oseb zapiše v datoteko beležnice.

Profiliranje
IN Performance Explorer izberite Instrumentacija in kliknite Začni profiliranje. Kliknite Pridobi ljudi. Ko naložite osebe, počakajte 10 sekund in kliknite Izvozi podatke. Zaprite beležnico in program. Profiler bo ustvaril poročilo.
Analiza
Profiler bo pokazal to sliko:

Nismo dobili želenih informacij. Filtriramo podatke. Posebej smo počakali 10 sekund, da smo preprosto izfiltrirali podatke o profiliranju, ki niso bili več potrebni. Označite od 13. do konca in pritisnite Filtriraj po izbiri. Še en rezultat:

Vroča pot kaže, da metoda Concat vzame veliko časa (je tudi prvi na seznamu funkcij z večino individualnega dela). Kliknite na Concat za ogled podrobnih informacij o metodi.

Jasno je, da PeopleTrax.Form1.ExportData je edina metoda, ki kliče Concat. Kliknite PeopleTrax.Form1.ExportData v klicnih metodah ( Funkcija, ki kliče to funkcijo).

Analizirajmo metodo v oknu kode. Upoštevajte, da ni neposrednega klica na Concat. Poleg tega obstaja uporaba operanda += , ki jih prevajalnik nadomesti z metodami System.String.Concat. Kot že skoraj vsi vedo, vse spremembe nizov v .NET vodijo v uničenje stara različica niz in ustvarjanje spremenjenega niza. Na srečo ima .NET razred StringBuilder ki je zasnovan za to vrsto dela.

Projekt že uporablja optimizirano metodo StringBuilder. V projektu PeopleTrax dodajte spremenljivko kompilacije OPTIMIZED_EXPORTDATA. Shranimo in ponovno zaženemo profiler ter primerjamo poročila. Takoj je očitno (in logično razumljivo), da smo optimizirali klice Concat (iz 6000 na 0-krat).

Po zagonu aplikacije lahko opazite opazno izboljšanje delovanja. Zelo pomembno je, da znova zaženete profiliranje, tudi če so vidne izboljšave. Pregledovanje novih podatkov po odpravi težave lahko razkrije druge težave pri delovanju aplikacije.

Eno mojih najljubših orodij je SQL Server Profiler, ki ga pogosto imenujemo preprosto Profiler. Ta pripomoček prikazuje podatke o poljubnem številu podrobnih dogodkov SQL Server. Te strežniške dogodke si lahko ogledate v oknu Trace Properties (Slika 49.3) in jih lahko tudi posnamete v datoteko ali tabelo za kasnejšo analizo. Filtre lahko nastavite tako, da registrirajo vse dogodke ali izbrano njihovo podmnožico.

Puc. 49.2. IN v tem primeru protokol števca bo beležil informacije

o zmogljivosti SQL Server v imeniku C:\Perf Logs

Pripomoček SQL Server Profiler lahko zaženete iz menija Orodja v programu Management Studio ali neposredno iz mape SQL Server 2005 sistemski meni Začetek. Če si želite ogledati dejavnost, morate definirati novo sled ali uporabiti obstoječo datoteko.

Z izdajo SP1 je SQL Server Profiler prejel Pozor! sledenje velikim nizom podatkov na velikih računalnikih.

Poleg tega je bil prej pri spremljanju storitve analize čas prikazan v enotah univerzalnega časa (UTC). Zdaj uporabljam lokalno sistemski čas. Prej uspešno reproducirani dogodki niso bili pravilno šteti, zaradi česar je uporabnik prejemal napačno statistiko. Ta težava je bila rešena.

Definiranje nove sledi

Ko je ustvarjena nova sled (bodisi z uporabo menijskega ukaza Datoteka^Nova sled ali gumba v orodni vrstici Nova sled), se ustvari tudi nova povezava s strežnikom SQL in odpre se pogovorno okno Lastnosti sledi (slika 49.4). Na zavihku Splošno v tem oknu je konfigurirano sledenje (zlasti ime, lokacija datoteke itd.), na zavihku Izbira dogodkov pa so določeni dogodki, podatki in filtri, ki se beležijo. Če se sledenje izvaja, si lahko te parametre ogledate, vendar jih ne morete spremeniti. Konfiguracijo sledenja lahko shranite kot predlogo, da olajšate ustvarjanje novih sledi v prihodnosti.

riž. 49.4. Zavihek Izbira dogodkov v oknu Lastnosti sledenja omogoča izbiro dogodkov, ki jim sledi pripomoček Profiler

Sled si je mogoče ogledati v realnem času, vendar se lahko podatki hkrati zapišejo v datoteko ali tabelo SQL Server. To je uporabno za pozneje napovedna analiza, primerjava s podatki števca sistemskega nadzornika ali za uvoz v pripomoček Database Engine Tuning Advisor.

Ko se odčitki zapišejo v datoteko, se združijo v 128 KB verige za izboljšanje zmogljivosti; podobno se pri pisanju v tabelo podatki združujejo v več vrstic.

Če želite podatke, ki jih je zajel Profiler, shraniti za poznejšo analizo, uporabite visoko zmogljiv metoda datoteke, kot tudi sledenje strežniku (o tem bomo govorili pozneje). Če želite analizirati podatke z uporabo navodila T-SQL, uporabite povsem enak pristop, vendar po zaključku seje sledenja odprite nastalo datoteko v pripomočku Profiler in v meniju izberite ukaz File^Save As^Table.

Izbira dogodka

Zavihek Izbira dogodkov določa seznam dejanj, ki jih izvaja strežnik baze podatkov in ki jih bo zabeležil pripomoček Profiler. Podobno kot Performance Monitor lahko Profiler spremlja številne ključne dogodke strežnika SQL. Za poenostavitev nastavitve izbire lahko uporabite privzete predloge.

I Dogodek SQL Batch Completed temelji na izvajanju paketov T-SQL v

SVS kot celota (paketi ločeni s terminatorji) in ne posamezna navodila.

| * Na podlagi tega Profiler beleži podatke o samo enem dogodku, ne glede na to

Simo odvisno od dolžine paketa. Za evidentiranje izvedbe posameznih navodil

DML uporablja dogodek SQL Statement Complete.

Vseh dogodkov ni mogoče uporabiti za reprodukcijo sledi. Na primer, dogodek SQL Batch Start je mogoče ponovno predvajati, dogodka SQL Batch Complete pa ne.

Glede na dogodke so na voljo različni podatki za sledenje. Čeprav se zdi, da je stolpec podatkov SPID neobvezen, je zavajajoč;

Filtriranje dogodkov

Profiler je sposoben za vas zbrati toliko informacij, da bi zlahka napolnil diskovni pogon, kot bi mignil. Na srečo vam bo filter programa (slika 49.5) pomagal omejiti to matriko samo na podatke, ki vas zanimajo.

riž. 49.6. SQL Server Profiler lahko integrira podatke nadzornika zmogljivosti in jih sinhronizira s spremljanimi dogodki

Uporaba SQL Trace

SQL Profiler se običajno uporablja interaktivno in zadostuje za občasno zbiranje podatkov. Vendar lahko dolgotrajne sledi zlahka kopičijo na stotine tisoč zapisov, kar lahko povzroči zelo specifične težave na delovni postaji, ki izvaja sledenje. Rešitev se zmanjša na ustvarjanje dnevnika sledenja neposredno na strežniku. To sledenje bo povzročilo majhno dodatno obremenitev strežnika; v tem primeru bodo datoteke zapisane v blokih po 128 KB.

IN industrijski sistemi izvajanje sledenja na strani strežnika, pisanje podatkov v datoteko na strežniku je najboljši način zbiranje informacij

o zmogljivosti ob zmanjšanju dodatne obremenitve strežnika.

Sledenje, ki se izvaja na strežniku, je mogoče definirati in implementirati z uporabo niza sistemskih shranjenih procedur. Programsko kodo lahko napišete sami ali s pomočjo programa SQL Server Profiler.

Ko je sledenje konfigurirano in preizkušeno v SQL Server Profilerju, v meniju izberite File^Export^Trace Definition^For SQL Server 2005, da ustvarite skript T-SQL, ki lahko izvaja sledenje na strani strežnika.

I Če želite izvedeti, katere sledi se izvajajo na strežniku, poizvedite

SVS namični pogled na nadzorne sistemske trase. Ko pogledate rezultate I* te poizvedbe, boste videli dodatno sledenje. Prva * številka je vedno tako imenovana privzeta sled, ki zbira podatke za dnevnike strežnika SQL - ni je mogoče ustaviti.

Če želite zaustaviti sledenje strežniku, uporabite sistemsko shranjeno proceduro sp_trace_setstatus. Njegov prvi argument (traceid) je identifikator sledi, drugi pa določa naravo dejanja. Vrednost nič za parameter dejanja povzroči, da se sled ustavi, vrednost ena, da jo začne, in vrednost dve, da jo zapre in izbriše. Naslednja koda ustavi sled številka 2.

SQL Profiler - programsko orodje, ki se uporablja za sledenje SQL Server. "Trace" - seja zbiranja informacij o delovanju SQL Server 2008

Glavni namen:

SQL Profiler skrbniki uporabljajo za:

· analiza vloge;

· ugotavljanje optimalnosti zahtev, poslanih strežniku;

· prepoznavanje ukazov Transact-SQL, ki pri izvedbi povzročijo napako;

· zbiranje informacij o dejavnosti uporabnikov v daljšem časovnem obdobju;

· spremljanje delovanja strežnika v realnem času.

Nove priložnosti:

a. Profiliranje analitičnih storitev;

b. Profiliranje dogodkov Integration Services;

c. zmožnost beleženja odčitkov števca iz Performance Monitorja pri snemanju informacij o izvajanju ukazov;

d. Profiler je dodal številne nove dogodke in vire informacij, ki jih je mogoče izbrati za zapis v datoteko sledenja;

f. možnost združevanja dogodkov v oknu profilerja.

Delo s SQL Server Profilerjem

1. Zaženite SQL Server Profiler - iz menija Start Programi SQL Server 2008 Performance Tools SQL Server Profiler.

2. V oknu, ki se odpre v meniju mapa izberite Nova sled in se povežite z SQL strežnik Server 2008, katerega delovanje bomo spremljali.

3. V oknu konfigurirajte parametre seje Lastnosti sledenja, ki se samodejno odpre pred začetkom seje sledenja (glej sliko 8.1).

riž. 8.1. Konfiguriranje možnosti seje sledenja

a. Na zavihku Splošno izberite s seznama Uporabite predlogo najprimernejša predloga. Predlogo izberemo z uporabo menija mapa à Predloge v SQL Server Profiler. Na začetku imate na voljo osem predlog:

1). Standardno (privzeto)- privzeta predloga, ki vam omogoča sledenje vsem shranjenim proceduram in ukazom Transact-SQL, sproženim za izvajanje;

2). SP_šteje- zbiranje informacij o shranjenih procedurah in funkcijah, sproženih za izvajanje, razvrščenih po imenu;

3). TSQL- zbiranje informacij o vseh ukazih Transact-SQL, zagnanih za izvajanje na strežniku, z navedbo identifikatorja uporabniških procesov in časa zagona;

4). TSQL_Duration- podobno kot pri prejšnji predlogi, le da se namesto podatka o času zagona ukaza TSQL beleži čas, ki je bil potreben za njegovo izvedbo;

5). TSQL_Grouped- poleg podatkov o kodi ukaza Transact-SQL in času zagona se beleži tudi podatek o imenu aplikacije, račun uporabnik v OS in uporabniški račun, ki je bil uporabljen za povezavo;



6). TSQL_Replay- beleženje najbolj podrobnih informacij o izvedenih ukazih Transact-SQL;

7). TSQL_SPs- poleg beleženja podatka o začetku izvajanja shranjene procedure (SP:Starting) se beleži podatek o izvedbi vsakega od ukazov shranjene procedure (SP:StmtStarting);

8). Uglaševanje- uporablja se za zbiranje informacij, potrebnih za svetovalca za uravnavanje baze podatkov.

b. Na zavihku Splošnoče morate določiti lokacijo, kjer so shranjene informacije o sledenju:

1). Podatke o sledenju je mogoče zabeležiti v datoteko (privzeto 5 MB):

· parameter Omogoči File Rollover določa, ali bo ob izpolnitvi ene datoteke samodejno ustvarjena naslednja. Ime naslednje datoteke bo enako imenu prejšnje, vendar bo njenemu imenu dodana številka (1, 2, 3 itd.)

· parameter Strežnik obdeluje podatke sledenja se lahko uporabi za povečanje zanesljivosti beleženja informacij o sledenju. Po potrditvi tega polja bo strežnik obravnaval obdelavo informacij o sledenju.

2). Podatke o sledenju je mogoče shraniti v tabelo strežnika SQL Server. Tabela z zahtevanim naborom stolpcev bo ustvarjena samodejno.

3). Uporaba parametra Omogoči Trace Stop Time Določite lahko čas, ko bo sledenje samodejno izklopljeno.

c. Na zavihku Izbor dogodkov določiti parametre za zbiranje informacij. V tabeli na tem zavihku morate izbrati zahtevane dogodke (v vrsticah) in podatke (v stolpcih), ki se bodo zanje beležili. Če želite prikazati vse vrstice in stolpce, morate potrditi polja Prikaži vse dogodke in Pokaži vse stolpce.

1). preko gumba Filtri stolpcev(Filtri stolpcev) konfigurirajte filtre za zbiranje potrebnih informacij (sledite dejanjem, izvedenim v določeni zbirki podatkov ali s strani določene aplikacije ali s strani določenega uporabnika) – Všeč mi je oz Ni všeč;

2). z uporabo gumba Organizirajte stolpce(Organiziraj stolpce) konfigurirajte vrstni red stolpcev za prikaz ali snemanje v profilerju z možnostjo združevanja podatkov – razdelek Skupina.

4. Po nastavitvi vseh parametrov sledenja kliknite na gumb Teči(Zagon) (glejte sliko 8.2)

riž. 8.2. Ogled informacij med sejo sledenja

Zgornji del okna prikazuje dogodke, ki se dogajajo na strežniku, spodnji pa prikazuje podrobne informacije za vsak dogodek (na primer koda ukaza SQL).

Možnosti, ki so na voljo v oknu za sledenje:

1. Če je na zavihku Organizirajte stolpce V lastnostih predloge ste izbrali stolpce za združevanje, lahko združite zapise po teh stolpcih v oknu za ogled. V ta namen v meniju Pogled podan ukaz Pogled v skupine;

2. Če je na seznamu skupina je bil postavljen samo en stolpec, potem imate možnost uporabiti način prikaza Združeni pogled(glej sliko 8.3). Ta način je omogočen z ukazom Združeni pogled iz istega menija Pogled.

riž. 8.3. Način prikaza Združeni pogled

3. V profilerju lahko odprete dogodke, shranjene v datotekah in tabelah sledenja. S pomočjo menija je možno tudi ponoviti posnete operacije Ponovitev;

4. Informacije o sledenju lahko povežete s števci zmogljivosti System Monitor. Za to:

· definirajte sejo sledenja, med katero je treba zabeležiti informacije za stolpce Začetni čas in Končni čas;

· začnite sejo sledenja s snemanjem informacij v datoteko ali tabelo. Hkrati zberite protokol odčitkov števca v datoteko Monitor uspešnosti;

· odprto zbranih informacij iz datoteke sledenja v profilerju in nato uporabite ukaz Uvoz podatkov o uspešnosti iz menija mapa.