SQL Profiler rješava problem.

SQL Server 2005 Profiler, Praćenje upita aplikacije, Uzorci praćenja, Grupiranje informacija o upitima

Jedan od najkorisnijih alata za praćenje aktivnosti korisnika je profiler (Profiler). Pomoću ovog alata možete saznati koje naredbe SQL Server trenutno izvršava. Potreba za korištenjem profilera javlja se vrlo često. Evo nekoliko standardnih situacija u kojima može biti vrlo teško bez njega:

q želite analizirati rad aplikacije i vidjeti koje naredbe ona izvršava na poslužitelju. Ove informacije mogu biti korisne:

· Da biste razumjeli s kojim tablicama u bazi podataka ova aplikacija radi prilikom izvođenja određenih operacija. Vrlo često u poduzeću postoji potreba za stvaranjem izvješća u obliku koji nije dostupan u aplikaciji, a programeri rijetko daju detaljne informacije o strukturi baze podataka;

· Da biste saznali koliko je optimalno sa stajališta izvedbe zahtjeva aplikacija šalje poslužitelju. U praksi, kada koristite profilator, često možete identificirati potpuno neoptimalne upite, na primjer, kada se filtriranje ili sortiranje podataka izvodi na klijentu;

· Razumjeti pri izvršavanju koje Transact -SQL naredbe iz aplikacije na poslužitelju dolazi do pogreške;

q za prikupljanje informacija o aktivnostima korisnika tijekom dužeg vremenskog razdoblja (na primjer, možete prikupiti sve zahtjeve koje je određena aplikacija poslala poslužitelju tijekom radnog dana). Prikupljene informacije se zatim mogu ručno analizirati ili proslijediti Database Tuning Advisoru radi automatizirane analize;

q za praćenje performansi poslužitelja u stvarnom vremenu. Na primjer, ako poslužitelj iznenada uspori, možete vidjeti u prozoru profilera koje se naredbe trenutno izvršavaju na njemu.

SQL Server 2005 uvodi puno novih stvari u profiler:

q Uvedeno je profiliranje događaja Integration Services. Sada možete koristiti profiler za praćenje napretka novih DTS paketa;

q sada je moguće bilježiti očitanja brojača iz System Monitora prilikom pisanja informacija o izvršenju naredbe;

q Mnogi novi događaji i izvori informacija dodani su u profiler koji se može odabrati za pisanje u datoteku praćenja. Definicija onoga što treba napisati u datoteku praćenja sada se može spremiti u XML formatu;

q Sada možete spremati rezultate praćenja u XML formatu (mogućnost pisanja u ANSI, OEM, UNICODE formate je također spremljena);

q Čak se i planovi izvršavanja Transact -SQL naredbi koje je uhvatio profiler mogu spremiti u XML formatu. Ovi planovi se zatim mogu otvoriti u SQL Server Management Studiju za daljnju analizu;

q sada je moguće grupirati događaje izravno u prozoru profilatora. Korištenjem grupiranja, na primjer, možete vrlo jednostavno izračunati koliko je puta određena Transact -SQL naredba izvršena na poslužitelju tijekom dana.

Rad s profilerom izgleda vrlo jednostavno. Ova se aplikacija može pokrenuti iz izbornika Početak| Programi| Microsoft SQL Server 2005 | Alati za izvedbu | SQL Server Profiler ... Za početak, u prozoru profilera koji se otvara u izborniku Datoteka(Datoteka) koju trebate odabrati NoviTrag(Novo praćenje) i povežite se na poslužitelj SQL Server 2005 koji ćete nadzirati. Praćenje se odnosi na sesiju koja prikuplja informacije o radu SQL Servera 2005. Međutim, prije nego što počnete prikupljati informacije, morate konfigurirati parametre ove sesije. Ova postavka se vrši u prozoru TragSvojstva(Svojstva praćenja), koji se automatski otvara prije pokretanja sesije praćenja (slika 11.1).

Riža. 11.1. Postavljanje parametara sesije praćenja

U kartici Općenito(Općenito) na popisu Koristitithepredložak(Upotrijebi predložak) možete odabrati najprikladniji predložak za prikupljanje informacija unutar vaše sesije. U principu, možete zanemariti postavke predloška, ​​ali ručno definirati parametre za prikupljanje informacija (pomoću susjedne kartice DogađajiIzbor(Odabir događaja)). Međutim, navođenje ispravnog predloška može uštedjeti vrijeme i izbjeći pogreške. Stoga ćemo se detaljnije zadržati na predlošcima.

Predložak se sprema u posebnu datoteku s ekstenzijom tdf postavke sesije praćenja. Rad s predlošcima (dodavanje novih, promjena postojećih, uvoz i izvoz izvješća u druge direktorije) obavlja se pomoću izbornika Datoteka| Predlošci(Datoteka | Predlošci) u SQL Server Profiler. U početku vam je na raspolaganju osam predložaka:

q Standardno (zadano)- kao što naziv implicira, ovaj predložak je prikladan za većinu situacija i stoga je odabran prema zadanim postavkama. Omogućuje vam praćenje svih pohranjenih procedura i Transact -SQL naredbi koje se pokreću za izvršenje;

q SP _Broji- prikupljaju se podaci o pohranjenim procedurama i funkcijama pokrenutim za izvršenje. U ovom slučaju, informacije u prozoru profilera su razvrstane (u terminologiji profilera - grupirane) prema nazivima pohranjenih procedura;

q TSQL- prikupljaju se podaci o svim Transact -SQL naredbama koje su pokrenute za izvršenje na poslužitelju. Osim koda naredbe, bilježe se i informacije o identifikatorima korisničkih procesa i vremenu početka. Obično se ovaj predložak koristi za praćenje naredbi koje aplikacija šalje poslužitelju;

q TSQL _Trajanje- gotovo isto kao i prethodni predložak, ali umjesto snimanja informacija o vremenu kada je Transact -SQL naredba pokrenuta, bilježi se vrijeme potrebno za njezino izvršenje. Obično se ovaj predložak koristi za ručno praćenje performansi poslužitelja;

q TSQL _Grupirano- osim informacija o kodu naredbe Transact -SQL i vremenu njegovog pokretanja, bilježe se i podaci o nazivu aplikacije, korisničkom računu u operacijskom sustavu i korisničkom imenu koje je korišteno za povezivanje. U ovom slučaju, zapisi su grupirani prema prijavi. Obično se ovaj obrazac koristi u situacijama kada želite pratiti aktivnost određene aplikacije;

q TSQL _Ponovi- bit će zabilježene najdetaljnije informacije o izvršenim naredbama Transact -SQL. Tada se te informacije mogu koristiti za reproduciranje opterećenja na poslužitelju s maksimalnom točnošću. Obično se ovaj predložak koristi za pisanje skupa naredbi koje će se zatim koristiti za testiranje različitih postavki poslužitelja s gledišta izvedbe;

q TSQL _SP-ovi- osim snimanja informacija o početku cijele pohranjene procedure (događaj SP: Početak), ova opcija praćenja također bilježi informacije o izvršenju svake naredbe u ovoj pohranjenoj proceduri (događaj SP: StmtStarting). Ovaj obrazac se obično koristi za praćenje rada složenih pohranjenih procedura;

q Ugađanje- Ovaj predložak je dizajniran za snimanje informacija najprikladnijih za prijenos Savjetnika za podešavanje baze podataka. Kako raditi s ovim automatiziranim alatom za analizu i optimizaciju performansi bit će razmotreno u sekta. 11.5.5.

Kao što je već spomenuto, uopće nije potrebno ograničiti se samo na skup gotovih predložaka. Možete koristiti vlastite parametre sesije praćenja tako da ih konfigurirate na kartici DogađajiIzbor... U tablici na ovoj kartici morate odabrati tražene događaje (u recima) i podatke (u stupcima) koji će se za njih bilježiti. Imajte na umu da je prema zadanim postavkama vidljiv samo mali dio dostupnih redaka i stupaca. Da biste omogućili prikaz svih redaka i stupaca, morate označiti potvrdne okvire PokazatisviDogađaji(Prikaži sve događaje) i PokazatisviKolumne(Prikaži sve stupce).

Često se događa da trebate pratiti samo radnje izvršene u određenoj bazi podataka, ili određenoj aplikaciji, ili određenom korisniku, ili odabrati sve ove uvjete u isto vrijeme. Filteri za prikupljanje podataka mogu se konfigurirati klikom na gumb StupacFiltri(Filtri stupaca) na kartici DogađajiIzbor... Za svaki stupac možete konfigurirati snimanje samo određenih vrijednosti ( Kao) ili zabrana snimanja određenih vrijednosti ( Ne kao). Prema zadanim postavkama, konfiguriran je jedan filtar. Ne kao za stupac Naziv aplikacije... To uzrokuje zanemarivanje svih događaja SQL Server Profilera, odnosno svih događaja koji se odnose na sam proces prikupljanja informacija o praćenju. Bolje je ne uklanjati ovaj filtar, jer inače može doći do pozitivnih povratnih informacija s beskonačnim snimanjem informacija.

S još jednim gumbom OrganiziratiKolumne(Organizirajte stupce) koji se nalazi na kartici DogađajiIzbor, možete prilagoditi redoslijed stupaca za prikaz ili unos u profiler. Obratite pažnju na odjeljak Skupina(Grupa) na ovom popisu. Za one stupce koji se nalaze u njemu, grupiranje će se izvršiti automatski. Ako stavite samo jedan stupac u ovaj odjeljak, tada ćete prilikom gledanja imati priliku koristiti vrlo prikladan način rada AgregiranoPogled(Agregirani prikaz) (kada se informacije automatski grupiraju, na primjer, prema bazi podataka, prema aplikaciji, korisničkom imenu itd., a unosi za željenu bazu podataka, aplikaciju ili korisnika mogu se proširiti i sažimati).

Nakon što odaberete željeni predložak ili konfigurirate vlastiti skup događaja za prijavu, samo se trebate vratiti na karticu Općenito i konfigurirajte nekoliko dodatnih parametara za sesiju praćenja.

Podaci o praćenju mogu se zabilježiti u datoteku. Ova se datoteka može koristiti u različitim situacijama:

q se može proslijediti kao izvor informacija Savjetniku za podešavanje baze podataka;

q se može više puta "reproducirati" u profileru ponavljanjem svih snimljenih naredbi, na primjer, za procjenu izvedbe pod različitim postavkama poslužitelja;

q se može predstaviti razvojnim programerima kao podrška njihovim tvrdnjama o aplikaciji.

Zabilježimo neke točke koje se odnose na bilježenje sesije praćenja u datoteku:

q Zadana veličina datoteke od 5 MB vrlo je mala. Prilikom profiliranja proizvodnog poslužitelja, ova se veličina upisuje u minutama. Istina, po zadanom je potvrdni okvir označen Omogućitidatotekaprevrtanje(Omogući promjenu datoteka), odnosno nakon popunjavanja jedne datoteke automatski će se stvoriti druga datoteka, čiji će naziv biti dodan brojem 1, zatim 2 itd., ali nije uvijek prikladno raditi s veliki broj datoteka. Ako prikupljate podatke za prijenos Database Tuning Advisor, bolje je postaviti ograničenje veličine datoteke na 1 GB (pomoću parametra Setmaksimumdatotekaveličina(Prilagodi maksimalnu veličinu datoteke). Općenito). Snimanje praćenja u datoteku najčešće se izvodi s administratorske radne stanice, tako da će biti potreban prostor na disku na radnoj stanici, a ne na poslužitelju;

q parametar Poslužiteljprocesatragpodaci(Poslužitelj obrađuje podatke o tragovima) može se koristiti za povećanje pouzdanosti snimanja podataka o tragovima. Prema zadanim postavkama, SQL Server Profiler upravlja obradom podataka praćenja na računalu na kojem se izvodi (ne nužno na poslužitelju). Ako odaberete ovaj potvrdni okvir, poslužitelj će upravljati obradom informacija praćenja. To osigurava da će se prikupiti sve informacije o praćenju (ako je potvrdni okvir poništen u vrijeme najvećeg opterećenja poslužitelja, neke od informacija mogu se preskočiti), ali će povećati opterećenje poslužitelja.

Druga opcija za pisanje informacija o praćenju je upisivanje u tablicu SQL Servera. Tablica s potrebnim skupom stupaca bit će kreirana automatski. Možete prilagoditi samo maksimalni broj unosa u ovoj tablici. Imajte na umu da je na ovoj kartici maksimalni broj zapisa naveden u tisućama.

Posljednji parametar na kartici Općenito- OmogućitiTragStopvrijeme(Uključuje vrijeme zaustavljanja praćenja). Možete odrediti vrijeme kada će praćenje biti automatski onemogućeno. Obično ima smisla isključiti praćenje prije pokretanja bilo kakvih uslužnih operacija koje vas ne zanimaju s gledišta zapisivanja (sigurnosno kopiranje, masovno učitavanje podataka, obrada OLAP kocki, itd.).

Nakon što su svi parametri praćenja konfigurirani, možete kliknuti gumb Trčanje kartica (Pokreni). Općenito i počnite pratiti (slika 11.2).

Riža. 11.2. Pregled informacija tijekom sesije praćenja

Rad u pregledniku informacija o praćenju je sasvim očit: gornji dio prikazuje događaje koji se događaju na poslužitelju, a donji dio pruža detaljne informacije za njih (na primjer, kod SQL naredbi). Napomenimo neke od mogućnosti koje su dostupne u ovom prozoru:

q ako kartica OrganiziratiKolumne u svojstvima predloška odabrali ste stupce za grupiranje, tada možete grupirati po tim stupcima zapise u pregledniku. U tu svrhu u izborniku Pogled(Prikaz) naredba GrupiranoPogled(Grupni prikaz);

q ako se nalazi na istoj kartici u svojstvima predloška na popisu Skupina postavljen je samo jedan stupac, tada možete koristiti još praktičniji način prikaza AgregiranoPogled(sl. 11.3). Ovaj način rada je omogućen pomoću naredbe AgregiranoPogled iz istog izbornika Pogled i omogućuje vam da pretvorite vrijednosti iz stupca po vašem izboru u čvorove stabla koje možete skupiti i proširiti. Osim toga, broj događaja se automatski izračunava za svaki od ovih čvorova.

Riža. 11.3. Način prikaza AgregiranoPogled

q U profileru možete prikazati ne samo događaje koji su upravo uhvaćeni, već i spremljene datoteke i tablice praćenja. Alternativno, možete otvoriti obične skripte SQL Servera s naredbama Transact -SQL. Informacije iz ovih datoteka ili tablica mogu se koristiti za ponavljanje zabilježenih operacija. Naredbe izbornika namijenjene su za tu svrhu. Ponovi(Ponoviti);

q SQL Server 2005 Profiler uvodi novu značajku za povezivanje informacija praćenja s brojačima performansi u Monitoru performansi. Kako biste iskoristili ovu priliku, trebate:

Definirajte sesiju praćenja tijekom koje se moraju zabilježiti informacije za stupce Vrijeme početka i Vrijeme završetka;

· Započnite sesiju praćenja sa snimanjem informacija u datoteku ili tablicu. Istovremeno prikupiti očitanja mjerača Performance Monitora u datoteku;

Otvorite prikupljene informacije iz datoteke praćenja u profileru, a zatim upotrijebite naredbu UvozIzvođenjePodaci(Uvezi podatke o izvedbi) iz izbornika Datoteka.

SQL Server 2005 pruža rezervirano mjesto za profiler. To su procedure pohranjene u tragovima. Njihova je funkcionalnost gotovo identična onoj u profileru. Na primjer, također možete odabrati događaje za praćenje i zapisati ih u tekstualnu datoteku. Glavna razlika je u tome što će se sve postavke morati izvršiti iz Transact -SQL koda.

Pohranjene procedure praćenja teže su i manje prikladne za rad nego s profilatorom i ne pružaju dodatne značajke. Stoga ih nećemo detaljno razmatrati. Ovdje je samo popis takvih pohranjenih procedura s kratkim opisom:

q sp_trace_create- omogućuje vam konfiguriranje parametara sesije praćenja;

q sp_trace_setevent- omogućuje vam odabir potrebnih događaja za kreiranu sesiju praćenja;

q sp_trace_setfilter- omogućuje vam da konfigurirate filtar za prikupljanje podataka o tragovima;

q sp_trace_setstatus- omogućuje vam da pokrenete praćenje, zaustavite ga ili izbrišete trag kreiran pohranjenom procedurom sp_trace_create definicija trenutne sesije;

q sp_trace_generateevent- omogućuje vam generiranje prilagođenog događaja koji će biti presretnut tijekom praćenja.

SQL Server Profiler je grafički prednji kraj za kreiranje tragova i analizu rezultata praćenja. Događaji se spremaju u datoteku praćenja, koja se zatim može analizirati ili koristiti za reproduciranje određenih sekvenci koraka za identificiranje problema.

Da biste pratili radnje koje se trenutno odvijaju, morate pokrenuti MS SQL Profiler, kreirati novi trag i konfigurirati analizu indikatora:

Na kartici "Općenito" morate navesti naziv traga. Odredite gdje će se snimani podaci o tragovima spremati - u datoteku i/ili u tablicu baze podataka.

Kartica "Odaberi događaje" je od velikog interesa:

Ova stranica navodi događaje za praćenje. U ovom primjeru naznačit ćemo podatke potrebne za praćenje planova upita.

Besplatno nabavite 267 1C video tutoriale:

Prema zadanim postavkama, praćenje prolazi kroz sve navedene događaje u svim bazama podataka. Da biste nametnuli odabire na primljene podatke, morate kliknuti gumb "Filtri stupaca ...":

Na primjer, postavimo filtar prema identifikatoru baze podataka (ID baze podataka možete saznati pomoću upita SELECT DB_ID (N'BaseName ')).

Pokretanje praćenja u Profileru za 1C

Nakon što su sve postavke napravljene, ostaje započeti praćenje, za to morate kliknuti "Pokreni" (RUN). Od ovog trenutka, sve radnje navedene u filteru počet će se pratiti:

Na primjer, pokrećem praćenje u trenutku dokumenta "Prijemci robe i usluga" kako bih pratio najzahtjevnije operacije.

Nakon primitka traga, potrebno ga je analizirati.

Analiza podataka iz Profilera

Za analizu, rezultirajući trag se može spremiti ili u datoteku ili u tablicu. Spremit ćemo u tablicu baze podataka:

U ovom poglavlju nastavit ćemo s istraživanjem pohranjenih procedura koje smo započeli u "Stvaranju i upravljanju pohranjenim procedurama". Naučit ćete kako analizirati pohranjene procedure i druge T-SQL izraze koristeći Microsoft SQL Server Query Analyzer i SQL Server Profiler. Iz ove analize možete odrediti koliko su T-SQL izrazi učinkoviti. Učinkovit upit SQL Servera koristi ispravan slijed operacija i prave indekse kako bi se smanjio broj obrađenih redaka i smanjila količina I/O.

Koristeći Query Analyzer, možete vidjeti plan izvršenja odabran za T-SQL izraz optimizator upita SQL Server. Optimizator upita Je interni modul koji traži najbolji plan izvršenja za svaki T-SQL izraz. Optimizator upita analizira svaku T-SQL naredbu, gleda niz mogućih planova izvršenja i procjenjuje "trošak" svakog plana u smislu potrebnih resursa i vremena obrade. Odabire se plan s najnižom cijenom. Trošak svakog plana utvrđuje se na temelju dostupnih statistika koje prikuplja sustav i koje mogu biti zastarjele. Kao što možda znate više o svojoj bazi podataka i svojim podacima od optimizator upita, tada ćete možda moći izraditi plan koji je bolji od optimizatora upita. Koristeći informacije koje Query Analyzer pruža, možete odrediti hoće li plan optimizatora upita za određeni izraz funkcionirati, a ako ne, možete pokušati optimizirati tu naredbu modificiranjem ili korištenjem SQL savjeta. U ovom ćete poglavlju naučiti kako optimizirati T-SQL izraze kako biste nadopunili vaše učenje o korištenju Query Analyzera.

Koristeći Profiler, možete analizirati operacije unutar vašeg sustava SQL Server kako biste utvrdili koji SQL izrazi i pohranjene procedure koriste višak resursa sustava. S ovim informacijama na mjestu, možete usredotočiti svoje napore ugađanja prvenstveno na ove izjave i pohranjene procedure. Osim što opisuje kako koristiti Profiler, ovo vam poglavlje također pokazuje kako najbolje iskoristiti informacije koje dobijete od Profilera.

Korištenje SQL Query Analyzera

Query Analyzer dolazi s Microsoft SQL Server 2000 za zamjenu

U svom radu često se susrećemo sa situacijom da određeni zahtjev radi usporeno, a u tekstu zahtjeva nisu vidljivi nikakvi očiti problemi. Obično je u ovom slučaju potrebno istražiti problem na dubljoj razini. U pravilu postaje potrebno pogledati tekst SQL upita i njegov plan, a tu nam pomaže SQLProfiler.

Što je SQL Profiler i zašto je uopće potreban

SQLProfiler je program koji se isporučuje s MS SQL Serverom i dizajniran je za pregled i pregled svih događaja koji se događaju na SQL poslužitelju, ili, drugim riječima, za snimanje traga. Zašto SQLProfiler može biti potreban 1C programeru? Barem da biste dobili tekst upita u SQL-u i vidjeli njegov plan. Naravno, to se može učiniti uz pomoć tehnološkog časopisa, ali to zahtijeva određene vještine, a plan u TJ-u nije tako lijep i čitljiv. U profileru možete vidjeti ne samo tekstualni, već i grafički plan izvršenja upita, što je, po mom mišljenju, mnogo prikladnije. Također, pomoću alata za profiliranje možete odrediti: zahtjeve duže od određenog vremena, zahtjeve za određenu tablicu čekanja na zaključavanje, vremenska ograničenja zastoja i još mnogo toga...

Analiza upita pomoću SQL Profilera

Najčešće korišteni profiler je za analizu upita. U pravilu ne trebamo pratiti sve upite, često je potrebno vidjeti kako se određeni 1C upit prevodi u SQL, te vidjeti njegov plan izvršenja. Na primjer, može biti potrebno utvrditi zašto se upit izvodi sporo ili smo napisali veliki upit i želimo biti sigurni da tekst upita u SQL jeziku ne sadrži spojeve podupita. Da biste uhvatili zahtjev u praćenju, učinite sljedeće:

1. Pokrenite SQL Profiler Start - Svi programi - Microsoft SQL Server 2008 R2 - Alati za produktivnost - SQLProfiler
2. Kreirajte novu datoteku traga - Kreirajte trag (Ctrl + N)
3. Navedite DBMS poslužitelj na kojem se nalazi naša baza podataka i kliknite "Poveži".

Naravno, ništa vas ne sprječava da pratite DBMS poslužitelj koji se nalazi na drugom računalu. 4. U prozoru koji se pojavio "Svojstva praćenja" idite na drugu karticu "Odaberi događaje"

5. Sada trebate navesti događaje i svojstva tih događaja koje želimo vidjeti u praćenju. Potrebni su nam upiti i planovi upita, stoga moramo omogućiti odgovarajuće događaje. Za prikaz cjelovitog popisa svojstava i događaja omogućite zastavice "Prikaži sve stupce" i "Prikaži sve događaje". Zatim morate odabrati samo događaje prikazane na donjoj slici, svi ostali događaji moraju biti onemogućeni.


Opis događaja: ShowplanStatisticsProfile - tekstualni plan izvršenja upita.
ShowplanXMLStatisticsProfile - grafički plan izvršenja upita.
RPC: Dovršeno - tekst zahtjeva ako se izvršava kao procedura (ako se izvršava 1C zahtjev s parametrima).
SQL: BatchCompleted - tekst zahtjeva, ako se izvršava kao normalan zahtjev (ako je 1C zahtjev izvršen bez parametara).

6. Sada morate konfigurirati filtar za događaje. Ako se to ne učini, vidjet ćemo zahtjeve za sve baze podataka koje se nalaze na ovom DBMS poslužitelju. Kliknite gumb "Filtri stupaca" i navedite filtar prema nazivu baze podataka

Sada ćemo u praćenju vidjeti samo upite bazi podataka "TestBase_8_2". Ako želite, možete staviti filter na druga polja, najzanimljivija od njih: Duration, TextData (obično tekst upita) i RowCounts (broj retke koje je vratio upit).

Na primjer, ako trebam uhvatiti sve zahtjeve prema tablici "_InfoRg4312" koji traju više od 3 sekunde u bazi podataka "TestBase_8_2", onda radim:
a) Filtrirajte prema bazi podataka, primjer prikazan gore
b) Filtrirajte po trajanju u milisekundama.

C) Filtrirajte prema tekstu zahtjeva


Ovdje određujemo masku. Ako trebate pratiti upite koji pristupaju više tablica, tada stvorite nekoliko stavki u odjeljku "Izgleda". Svi uvjeti filtera rade zajedno.

7. Sada možete početi pratiti. Kliknite "Pokreni", nakon toga praćenje počinje raditi i možete vidjeti događaje koje ste konfigurirali za prikaz i koji spadaju u vaše filtere. Za upravljanje praćenjem možete koristiti gumbe na naredbenoj traci.


S lijeva na desno: Eraser - briše prozor za praćenje, Start - počinje praćenje, Pause - pauzira praćenje, kada kliknete na Start, praćenje se nastavlja, Stop - zaustavlja praćenje

8. Sam prozor za praćenje sastoji se od dva dijela. Na vrhu su događaji i svojstva događaja. Na dnu se prikazuju različite informacije ovisno o vrsti događaja. U našem slučaju, ovdje će biti prikazan ili tekst zahtjeva ili njegov plan.

9. Izvršimo zahtjev u 1C konzoli za upite i vidimo kako će se to odraziti u profileru.


Trag pokazuje da je zahtjeva bilo nekoliko, a samo jedan je naš. Ostali zahtjevi su zahtjevi za uslugom.

10. Po svojstvima događaja možete razumjeti: koliko sekundi je upit bio pokrenut (Duration), koliko je bilo logičkih čitanja (Reads), koliko je redaka upit vratio kao rezultat (RowCounts) itd. U mom slučaju, zahtjev je trajao 2 milisekunde, izvršio 4 booleova čitanja i vratio 1 red.

11. Ako idemo jedan događaj više, onda možemo vidjeti plan upita u grafičkom obliku.
Kao što možete vidjeti iz plana, pretraga se vrši po indeksu po cijeni, iako se ovaj plan ne može nazvati idealnim, jer indeks ne pokriva, polja koda i imena dobivaju se pomoću KeyLookupa, što oduzima 50% vremena.


Pomoću kontekstnog izbornika, grafički plan se može spremiti u zasebnu datoteku s nastavkom * .SQLPlan i otvoriti u profileru na drugom računalu ili pomoću naprednijeg programa SQL Sentry Plan Explorer.

12. Ako idemo još više, tada ćemo vidjeti isti plan upita, ali u tekstualnom obliku. Upravo je ovaj plan prikazan u TZ, MCC i drugim 1C alatima za praćenje performansi. Da biste ga analizirali, preporučujem korištenje naprednog uređivača teksta s isticanjem, kao što je Notepad ++.

13. Pomoću izbornika "Datoteka-Spremi kao" cijeli se trag može spremiti u različitim formatima:
a) U formatu samog profilera, t.j. s nastavkom * .trc
b) U xml format
c) Od traga možete napraviti predložak. Vidi sljedeću stavku.
d) Možete spremiti praćenje kao tablicu baze podataka. Zgodan način ako trebamo pronaći, na primjer, najsporiji zahtjev u cijelom praćenju, ili odabrati zahtjeve po nekom parametru. Datoteka - Spremi kao - Tablica praćenja - Odaberite DBMS poslužitelj i spojite se na njega. Zatim morate odabrati bazu podataka na navedenom poslužitelju i odrediti naziv tablice u kojoj će se trag spremati. Možete odabrati postojeću tablicu ili napisati novi naziv i tada će se tablica automatski kreirati u odabranoj bazi podataka.

Treba imati na umu da se Duration u tablici pohranjuje u milijuntim dijelovima sekunde te je pri prikazu rezultata poželjno vrijednost pretvoriti u milisekunde. Također, u tablicu se dodaje stupac RowNumber koji prikazuje broj ovog retka u tragu.

14. Ako trebate često koristiti profiler za analizu upita, postavljanje potrebnih filtara i događaja brzo će vam dosaditi i oduzimati puno vremena. U pomoć dolaze predlošci praćenja, gdje specificiramo filtere i redoslijed stupaca koji su nam potrebni, a zatim jednostavno odabiremo ovaj predložak prilikom kreiranja novog traga. Za izradu predloška koristite izbornik Datoteka - Predlošci - Novi predložak

Na prvoj kartici sve je jednostavno. Naznačujemo vrstu poslužitelja, naziv predloška i, ako je potrebno, postavljamo oznaku za korištenje ovog predloška prema zadanim postavkama. Na drugoj kartici odabiremo događaje i postavljamo filtre, kao što je već prikazano gore. Također preporučujem podešavanje redoslijeda stupaca u praćenju, što štedi vrijeme pri analizi upita. Na primjer, smatram da je prikladnije koristiti sljedeći redoslijed.

Sada, kada kreirate novi trag, možete jednostavno odrediti traženi predložak, nakon toga će se na drugoj kartici automatski popuniti svi filtri i događaji.

Naravno, ovdje su prikazani daleko od svih načina korištenja ovog prekrasnog alata, ako je publika zainteresirana, tada će u budućnosti biti moguće nadopuniti zbirku članaka na ovu temu.

16.05.2000 Itzik Ben-Gan

Baš kao što rekonstrukcija mjesta zločina pomaže lociranju krivca, praćenje baze podataka može pomoći identificirati uska grla i popraviti ih.

Članak Catch the Event, objavljen u prethodnom broju časopisa, opisao je arhitekturu sustava praćenja SQL Server 7.0 i pokazao vam kako grafički definirati praćenje u SQL Profileru. Ovaj put ćemo govoriti o tome kako ponovno kreirati tragove pomoću SQL Profilera i kako odrediti automatsko pokretanje kroz proširene pohranjene procedure za praćenje. Uz ovu čvrstu osnovu, možete stručno koristiti SQL Profiler i pohranjene procedure za širok raspon istraživanja, od dugotrajnih upita do složenih zastoja.

Preliminarna priprema za reprodukciju staze

Koristeći SQL Profiler, možete ponovno reproducirati spremljene tragove za otklanjanje grešaka u problematičnim aplikacijama, kreiranje scenarija iz stvarnog života za testiranje, podešavanje baza podataka i još mnogo toga. Ako trebate ponovno hodati stazom, morat ćete obaviti neke pripremne radove. Prije svega, trebate definirati trag za praćenje određenih događaja i stupaca podataka uz one koji vas zanimaju. Snimanje ovih dodatnih događaja i stupaca osigurava da se sve aktivnosti ponavljaju točno kao i prije. Drugo, trebali biste spremiti rezultate praćenja u datoteku, tablicu ili SQL skriptu.

Svako ponovno pokretanje zahtijeva da se zahvate događaji Connect, Disconnect, ExistingConnection i RPC: Starting i SQL: BatchStarting. Osim toga, kada reproducirate API kursore na strani poslužitelja (tj. kursore poslužitelja kojima upravljaju funkcije API kursora), morate uhvatiti događaje CursorExecute, CursorOpen i CursorPrepare. Za reprodukciju pripremljenih SQL izraza na strani poslužitelja, dodajte Exec Prepared SQL i Prepare SQL događaje. Replay će zahtijevati stupce koji će sadržavati sljedeće podatke: naziv aplikacije, binarne informacije, ID veze ili ID procesa poslužitelja (SPID), ID baze podataka, klasu događaja, podklasu događaja, ime hosta, numeričke informacije, naziv poslužitelja, korisničko ime SQL, vrijeme početka i tekstualne informacije.

Važno je napomenuti da se tijekom ponovljene vožnje snimljeni događaji ne simuliraju, već se događaju iznova. Stoga, imajte na umu da ste tijekom početnog praćenja najvjerojatnije promijenili svoju bazu podataka. Na primjer, kada se reproducira trag koji uključuje INSERT izraz, u tablici se može pojaviti duplikat ključa. Da biste izbjegli ove probleme, trebali biste resetirati bazu podataka u njezino izvorno stanje ako se praćenje reproducira na izvornom poslužitelju (tj. na poslužitelju na kojem je izvorno praćenje pokrenuto).

Ako će ponovno pokretanje biti na drugom poslužitelju, važno je osigurati da je baza podataka na tom poslužitelju u istom stanju kao i baza podataka na izvornom poslužitelju. U ovom slučaju, neophodno je koristiti ista korisnička imena, njihova dopuštenja, identifikatore baze podataka koji su korišteni na izvornom poslužitelju.

Korištenje istih identifikatora zahtijeva posebnu vještinu i iskustvo, pogotovo jer Microsoft obeshrabruje izravan pristup tablici sustava sysdatabases kako bi promijenio identifikatore baze podataka. Podudarne ID-ove baze podataka možete dati na drugi način. Da biste to učinili, kopirajte datoteke korisničke baze podataka s izvornog poslužitelja na onaj gdje će se reproducirati praćenje, a zatim vratite sigurnosnu kopiju glavne baze podataka s izvornog poslužitelja na nju. Alternativna metoda je vratiti korisničku bazu podataka sigurnosno kopiranu s izvornog poslužitelja na poslužitelj odabran za izvođenje, a zatim tamo vratiti sigurnosnu kopiju glavne baze podataka. U oba slučaja, na poslužitelju na kojem se reproducira praćenje, datoteke baze podataka će se nalaziti u istim direktorijima kao i na izvornom poslužitelju, a tablice sustava glavne baze podataka sadržavat će izvorne ID-ove baze podataka. Da biste se u potpunosti riješili ovih problema, trebate samo ukloniti stupac ID baze podataka iz praćenja i postaviti zadanu bazu podataka za svakog korisnika koji je zarobljen tijekom praćenja.

Također možete kontrolirati razinu sinkronizacije skripte i brzinu reprodukcije. Odaberite Postavke s izbornika Replay za ulazak u dijaloški okvir Replay SQL Servera. Parametar Synchronization Level, koji kontrolira sinkronizaciju unutar veze, može imati sljedeće vrijednosti:

Potpuna sinkronizacija. Ovo je zadana postavka. U ovom slučaju, svi događaji koji su se dogodili u jednoj vezi reproduciraju se svojim izvornim redoslijedom. Djelomična sinkronizacija. Uz ovu vrijednost, događaji u jednoj vezi mogu započeti ranije od događaja koji su već zabilježeni u drugim vezama. Nema sinkronizacije. S ovom vrijednošću parametra događaji se mogu dogoditi odmah nakon završetka prethodnog događaja u istoj vezi, odnosno bez ikakve sinkronizacije unutar veze.

Parametar brzine ponavljanja, Replay Rates, može se postaviti na jednu od sljedećih vrijednosti:

Najbrže moguće. Ovo je zadana postavka, u kojem slučaju sljedeći događaj počinje odmah nakon završetka prethodnog. Održavajte interval između događaja. Ova vrijednost održava izvorni vremenski interval između pojave događaja. Održavajte odnos do vremena početka. S ovom vrijednošću događaji se događaju u isto vrijeme u odnosu na početak reprodukcije traga kao u izvornom tragu.

Organizacija reprodukcije zapisa

Pretpostavimo da želite ponovno reproducirati praćenje izvršenja pripremljenih poslužiteljskih SQL izraza, a to su Transact-SQL (T-SQL) izrazi koje korisnik šalje poslužitelju putem ADO-a, OLE DB-a ili ODBC-a. SQL Server 7.0 izvršava pripremljene SQL izraze na strani poslužitelja koristeći pseudo-trajne procedure sp_prepare i sp_execute koje poziva klijentska aplikacija.

Sp_prepare uzrokuje da SQL Server pripremi T_SQL izraze za izvođenje tako što ih kompajlira i stavi planove izvršenja u predmemoriju. Kada se pozove sp_execute, SQL Server izvršava unaprijed predmemorirane planove i to možda čini više puta. Svaki poziv pohranjenoj proceduri pokreće RPC događaje: BatchStarting, Prepare SQL i Exec Prepared SQL. Iz tog razloga ti događaji moraju biti uključeni u definiciju traga.

SQL Profiler nudi nekoliko uzoraka definicija praćenja koje možete koristiti kao predloške. To uključuje primjer broj 6, "T-SQL for Replay", koji se odnosi na ponovno pokretanje praćenja. Ovaj primjer je koristan za određivanje izlaza praćenja generiranog tijekom ponovnog reprodukcije. Da biste otvorili spremljeni izlaz praćenja za ponovnu reprodukciju, odaberite Otvori s izbornika Datoteka i odaberite datoteku, tablicu ili SQL skriptu za pohranu informacija o praćenju. Možete kontrolirati reprodukciju pomoću opcija prikazanih u tablici 1. One mogu biti predstavljene ili stavkama izbornika Replay ili gumbima na alatnoj traci.

Korištenje proširenih pohranjenih procedura

Neke funkcije praćenja iz SQL Profilera nisu dostupne. To uključuje pokretanje praćenja prema rasporedu, okidanje kada se dogodi određeni događaj ili kada se SQL Server pokrene. Osim toga, SQL Profiler se ne može konfigurirati za slanje tragova u dnevnik aplikacija Windows NT ili Windows 2000. Za izvođenje ovih funkcija i pružanje više programske kontrole nad praćenjem, možete koristiti skup proširenih pohranjenih procedura koje se zajednički nazivaju xp_trace *.

Pogledajmo kako se ove pohranjene procedure mogu koristiti pokretanjem sp_start_mytrace praćenja i sp_stop_mytrace pohranjene procedure za zaustavljanje praćenja. Prva pohranjena procedura, sp_start_mytrace, definira događaje praćenja, stupce podataka, filtere i stvara red za pohranu snimljenih događaja. Zatim dohvaća događaje iz reda čekanja i stavlja ih u sistemsku datoteku. Sp_start_mytrace komunicira s redom događaja i nadzire njegovo stanje kroz cijeli broj ručke reda koji procedura stvara prilikom izgradnje reda. Sp_stop_mytrace koristi ovu ručku kada treba prestati održavati red čekanja.

Praćenje stanja ručke reda nije lak zadatak. Iako postoji mnogo načina za dobivanje njegove vrijednosti, najjednostavniji i najfunkcionalniji način je kreiranje tablice u koju će se bilježiti podaci o svim tragovima i njihovim redovima, kao i vrijeme kada je praćenje započelo, korisnički ID koji je uključen. trag i naziv računala s kojeg je poslana.pokrenuta. Listing 1 prikazuje izraze koji stvaraju takvu tablicu zvanu activetraces. Da vidite koji se tragovi trenutno snimaju, samo pogledajte ovu tablicu. Da biste zaustavili praćenje, trebate samo upitati odgovarajući deskriptor reda iz tablice.

Pohranjena procedura za početak praćenja

Prođimo kroz ove dvije pohranjene procedure da vidimo kako počinje i kako se zaustavlja praćenje. Pohranjena procedura koja započinje praćenje ima četiri izborna ulazna parametra. Prva dva, @spid_filter i @dbid_filter, omogućuju vam da ograničite podatke prikupljene tijekom praćenja samo na one koji se odnose na određeni poslužiteljski proces (identificiran njegovim SPID-om) i danu bazu podataka. Ako ti parametri nisu navedeni, praćenje će prikupljati podatke o svim procesima i bazama podataka. Parametar @email_address omogućuje vam da odredite adresu e-pošte na koju će se slati detaljne informacije o napretku praćenja. Ako ovaj parametar nije naveden, tada će sp_start_mytrace prikazati samo informacije na ekranu. Ako je navedeno, ali adresa nije točna, tada će pohranjena procedura generirati poruku o pogrešci i izaći. Posljednji parametar, @filename, koristi se za određivanje naziva datoteke u koju će se poslati podaci prikupljeni tijekom praćenja. Ako ovaj parametar nije naveden, zadane informacije bit će smještene u datoteku c: \ mytraceN.trc, gdje je N broj deskriptora reda. Ova konvencija, koja definira pravilo za imenovanje datoteka s podacima o tragovima, dopušta istovremeno snimanje višestrukih tragova, bez dopuštanja jednom od njih da zaključa datoteku kako bi zabilježio rezultate samo za sebe.

Da biste provjerili radi li okidač, promijenite svojstva datoteke:

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

Primit ćete poruku da su se svojstva datoteke promijenila:

Promijenjena svojstva datoteke:
Izjava: ALTER DATABASE testdb MODIFY FILE (NAME = `testdb_dat`,
MAKSIMALNA VELIČINA = 30 MB)
NT korisničko ime: Gandalf
Naziv aplikacije: MS SQL Query Analyzer
SQL korisničko ime: NA
Vrijeme: 2000-11-22 14:15:28

Uvijek je vrlo teško shvatiti koji su događaji doveli do stvaranja zastoja. Međutim, SQL Profiler pruža posebne događaje koji mogu uvelike olakšati "istragu". Na primjer, možete pratiti pojavu događaja Lock: Deadlock pomoću praćenja. Početak ovog događaja kaže

da je nastao zastoj. Ovo govori korisniku ID procesa poslužitelja (SPID), ID blokirane transakcije, vrijeme blokade, naziv aplikacije i korisnički ID. Događaj Lock: Deadlock Chain iznimno je zgodan, koji se generira svaki put kada zaključate: omogućuje vam da saznate identifikatore procesa (SPID-ove) i transakcije.

Možete zabilježiti ID-ove transakcija uključenih u zastoj, zatim grupirati rezultate praćenja prema ID-u transakcije i analizirati samo te transakcije. Drugi pristup šalje rezultate praćenja u tablicu. Zatim možete koristiti upite za filtriranje prema SPID-u ili ID-u transakcije.

Da biste generirali situaciju zastoja, stvorite dvije tablice, t1 i t2, svaka sa samo jednim cjelobrojnim stupcem. Unesite u svaku tablicu jedan redak koji sadrži vrijednost 1. Postavite trag u kojem će se bilježiti sljedeći skup događaja: Zaključavanje: Zastoj, Zaključavanje: Lanac zastoja i odgovarajući događaji početka i kraja izvršenja izraza (RPC, SP , SQL). Odabir treba napraviti ovisno o namjeravanom izvoru blokiranja. U našem primjeru potrebni su nam samo događaji SQL: StmtStarting i SQL: StmtCompleted.

Uz zadane stupce podataka, dodajte stupac koji će sadržavati ID transakcije i stupce po vašem izboru. Instalirajte filtar praćenja koji odgovara ID-u baze podataka s kojom radite. Zatim otvorite dvije veze s poslužiteljem iz Query Analyzera. Od prvog povezivanja učinite:

ZAPOČNI AŽURIRANJE TRANSAKCIJE t1 POSTAVI col1 = 1

Na vezi 2 pokrenite sljedeću transakciju:

POČNITE TRANSAKCIJU
AŽURIRANJE t2 POSTAVI kol1 = 1
ODABERI * IZ t1
POČINITI TRANSAKCIJU

Konačno, u vezi 1, izvršite naredbe:

ODABERITE * IZ t2
POČINITI TRANSAKCIJU

Zaustavite praćenje i otvorite datoteku s njezinim rezultatima. Potražite događaje Lock: Deadlock Chain i zapišite brojeve uključenih transakcija. Grupirajte izlaz prema ID-u transakcije i proširite odgovarajuće transakcije. Izlaz će izgledati slično kao na slici 1.

SQL Server Enterprise Manager uključuje poseban čarobnjak koji vam može pomoći u instalaciji praćenja, uključujući one koji se koriste za pronalaženje uzroka zastoja. Da biste koristili Čarobnjak za stvaranje traga za definiranje praćenja, prijavite se u Enterprise Manager, odaberite Čarobnjaci s izbornika Alati, zatim otvorite kategoriju Upravljanje i odaberite Čarobnjak za kreiranje praćenja.

Završna napomena

Mogućnosti praćenja SQL Profilera, zajedno s proširenim pohranjenim procedurama za praćenje u SQL Serveru 7.0, omogućuju vam otklanjanje pogrešaka u izvedbi baze podataka. Bilo da želite pratiti zdravlje vašeg SQL Server okruženja ili rješavati probleme s performansama aplikacija, vrijeme je da svoje znanje upotrijebite u praksi.

Itzik Ben Gan [e-mail zaštićen] posjeduje MCDBA, MCSE + I, MCSD, MCT i SQL Server MVP certifikate. Viši je predavač tečajeva SQL Servera na Hi-Tech College u Izraelu i predsjedatelj izraelske korisničke grupe SQL Servera.

Podijeli ovo