SQL profiler welke tabel wordt geschreven. SQL Profiler lost problemen op. Starten en verbinding maken met de server

SQL Profiler is een softwaretool die wordt gebruikt om SQL Server te traceren. "Trace" - een sessie waarin informatie wordt verzameld over de werking van SQL Server 2008

Hoofddoel:

SQL Profiler wordt door beheerders gebruikt om:

· analyse van de aanvraag;

· het bepalen van de optimaliteit van verzoeken die naar de server worden verzonden;

· het identificeren van Transact-SQL-opdrachten die een fout veroorzaken wanneer ze worden uitgevoerd;

· het verzamelen van informatie over gebruikersactiviteiten gedurende een lange periode;

· monitoring van de werking van de server in realtime.

Nieuwe functies:

A. Profilering van analysediensten;

B. Eventprofilering van integratieservices;

C. de mogelijkheid om tellerstanden van de Prestatiemonitor vast te leggen bij het opnemen van informatie over de uitvoering van opdrachten;

D. Profiler heeft veel nieuwe gebeurtenissen en informatiebronnen toegevoegd die kunnen worden geselecteerd voor opname in het tracebestand;

F. mogelijkheid om gebeurtenissen in het profilervenster te groeperen.

Werken met SQL Server Profiler

1. Start SQL Server Profiler - vanuit het menu Start Programma's SQL Server 2008 Prestatietools SQL Server Profiler.

2. In het venster dat opent in het menu Bestand kiezen Nieuw spoor en maak verbinding met de SQL Server 2008-server waarvan we de werking zullen controleren.

3. Configureer sessieparameters in het venster Eigenschappen traceren, die automatisch wordt geopend vóór de start van de traceersessie (zie Fig. 8.1).

Rijst. 8.1. Traceringssessieopties configureren

A. Op het tabblad Algemeen selecteer uit de lijst Gebruik de sjabloon het meest geschikte sjabloon. De sjabloon wordt geselecteerd via het menu Bestand à Sjablonen in SQL Server Profiler. In eerste instantie heb je acht sjablonen tot je beschikking:

1). Standaard (standaard)- een standaardsjabloon waarmee u alle opgeslagen procedures en Transact-SQL-opdrachten kunt volgen die zijn gestart voor uitvoering;

2). SP_tellingen- het verzamelen van informatie over opgeslagen procedures en functies die zijn gestart voor uitvoering, gesorteerd op naam;

3). TSQL- verzameling van informatie over alle Transact-SQL-opdrachten die zijn gelanceerd voor uitvoering op de server, met vermelding van de identificatie van gebruikersprocessen en de starttijd;

4). TSQL_Duur- vergelijkbaar met de vorige sjabloon, maar in plaats van informatie over het tijdstip waarop de TSQL-opdracht werd gestart, wordt de tijd vastgelegd die nodig was om deze uit te voeren;

5). TSQL_Grouped- naast informatie over de Transact-SQL-opdrachtcode en het tijdstip waarop deze is gestart, wordt ook informatie vastgelegd over de applicatienaam, het gebruikersaccount in het besturingssysteem en het gebruikersaccount waarmee verbinding is gemaakt;



6). TSQL_Herhaling- het vastleggen van de meest gedetailleerde informatie over uitgevoerde Transact-SQL-opdrachten;

7). TSQL_SP's- naast het vastleggen van informatie over de start van het starten van de opgeslagen procedure (SP:Starting), wordt informatie over de uitvoering van elk van de opdrachten van de opgeslagen procedure (SP:StmtStarting) vastgelegd;

8). Afstemmen- gebruikt om informatie te verzamelen die nodig is voor Database Tuning Advisor.

B. Op het tabblad Algemeen als u de locatie moet opgeven waar traceringsinformatie wordt opgeslagen:

1). Traceerinformatie kan worden vastgelegd in een bestand (standaard 5 MB):

· parameter Schakel bestandsrollover in bepaalt of wanneer het ene bestand gevuld is, het volgende automatisch wordt aangemaakt. De naam van het volgende bestand zal dezelfde zijn als de naam van het vorige, maar er zal een nummer aan de naam worden toegevoegd (1, 2, 3, enz.)

· parameter Server verwerkt traceergegevens kan worden gebruikt om de betrouwbaarheid van het vastleggen van traceringsinformatie te vergroten. Nadat u dit vakje heeft aangevinkt, zal de server de verwerking van traceerinformatie afhandelen.

2). Traceringsinformatie kan worden opgeslagen in een SQL Server-tabel. Er wordt automatisch een tabel met de vereiste set kolommen gemaakt.

3). Met behulp van de parameter Traceerstoptijd inschakelen U kunt een tijdstip opgeven waarop tracering automatisch wordt uitgeschakeld.

C. Op het tabblad Evenementen selectie bepaal de parameters voor het verzamelen van informatie. In de tabel op dit tabblad moet u de vereiste gebeurtenissen (in rijen) en de informatie (in kolommen) selecteren die daarvoor wordt vastgelegd. Om alle rijen en kolommen weer te geven, moet u de vakjes aanvinken Toon alle evenementen En Toon alle kolommen.

1). via knop Kolomfilters(Kolomfilters) configureer filters om de benodigde informatie te verzamelen (volg acties die worden uitgevoerd in een specifieke database, of door een specifieke applicatie, of door een specifieke gebruiker) – Leuk vinden of Niet zoals;

2). met behulp van de knop Kolommen ordenen(Kolommen ordenen) configureer de volgorde van kolommen voor weergave of opname in de profiler met de mogelijkheid om gegevens te groeperen - Groepssectie.

4. Nadat u alle traceerparameters hebt ingesteld, klikt u op de knop Loop(Run) (zie Fig. 8.2)

Rijst. 8.2. Bekijk informatie tijdens een traceringssessie

In het bovenste gedeelte van het venster worden gebeurtenissen weergegeven die plaatsvinden op de server, en in het onderste gedeelte vindt u gedetailleerde informatie over elke gebeurtenis (bijvoorbeeld SQL-opdrachtcode).

Beschikbare opties in het traceringsvenster:

1. Indien op het tabblad Kolommen ordenen In de sjablooneigenschappen die u kolommen voor groepering hebt geselecteerd, kunt u records groeperen op basis van deze kolommen in het weergavevenster. Hiervoor in het menu Weergave opdracht verstrekt Gegroepeerde weergave;

2. Indien op de lijst Groep Er is slechts één kolom geplaatst, dan heeft u de mogelijkheid om de weergavemodus te gebruiken Geaggregeerde weergave(zie Afb. 8.3). Deze modus wordt ingeschakeld met behulp van de opdracht Geaggregeerde weergave uit hetzelfde menu Weergave.

Rijst. 8.3. Weergavemodus Geaggregeerde weergave

3. U kunt gebeurtenissen openen die zijn opgeslagen in bestanden en tabellen traceren in de profiler. Het is ook mogelijk om opgenomen handelingen te herhalen via het menu Opnieuw afspelen;

4. U kunt traceringsinformatie koppelen aan prestatiemeteritems van Systeemmonitor. Om dit te doen:

· definieer een traceringssessie waarin informatie voor de kolommen moet worden vastgelegd Begintijd En Eindtijd;

· start een traceringssessie waarbij informatie wordt vastgelegd in een bestand of tabel. Verzamel tegelijkertijd een protocol van meterstanden in een bestand Prestatiemonitor;

· open de verzamelde informatie uit het traceringsbestand in de profiler en gebruik vervolgens de opdracht Prestatiegegevens importeren uit het menu Bestand.

In ons werk komen we nogal eens een situatie tegen waarin een bepaald verzoek traag is en er geen duidelijke problemen zichtbaar zijn uit de tekst van het verzoek. Meestal is het in dit geval nodig om het probleem op een dieper niveau te onderzoeken. In de regel is het nodig om naar de tekst van de SQL-query en het bijbehorende plan te kijken, en dit is waar SQL Profiler ons helpt.

Wat is SQL Profiler en waarom is het nodig?

SQL Profiler is een programma dat bij MS SQL Server wordt geleverd en is ontworpen om alle gebeurtenissen die plaatsvinden op de SQL-server te bekijken of, met andere woorden, een trace vast te leggen.

Waarom heeft een 1C-programmeur SQL Profiler nodig?

Tenminste om de tekst van een query in SQL te krijgen en het plan ervan te zien. Dit kan natuurlijk met behulp van een technologiemagazine, maar dit vereist enige vaardigheden en het plan in het technische tijdschrift is niet zo mooi en leesbaar.

In de profiler kun je niet alleen een tekstueel, maar ook een grafisch query-uitvoeringsplan bekijken, wat naar mijn mening veel handiger is.

U kunt de profiler ook gebruiken om het volgende te bepalen:

verzoeken langer dan een bepaalde tijd

query's tegen een specifieke tabel

wachten op blokkeren

time-outs

impasse

en nog veel meer...

Query's analyseren met SQL Profiler

De profiler wordt meestal gebruikt om zoekopdrachten te analyseren. In de regel hoeven we niet alle zoekopdrachten bij te houden; vaak moeten we zien hoe een bepaalde zoekopdracht in de 1C-taal in SQL wordt vertaald en het uitvoeringsplan ervan zien. We hebben dit bijvoorbeeld nodig om te bepalen waarom een ​​query langzaam wordt uitgevoerd, of we hebben mogelijk een grote query geschreven en willen er zeker van zijn dat de hoofdtekst van de SQL-query geen joins met een subquery bevat.

Om de aanvraag in de tracering op te vangen, doet u het volgende:

1. Start SQL Profiler

Start - Alle programma's - Microsoft SQL Server 2008 R2 - Productiviteitstools - SQL Profiler

2. Maak een nieuwe tracering

Bestand – Trace maken (Ctrl+N)
3. Specificeer de DBMS-server waarop onze database zich bevindt en klik op “Verbinden”.

Uiteraard belet niets u om een ​​DBMS-server te traceren die zich op een andere computer bevindt.

4. Ga in het venster “Trace Properties” dat verschijnt naar het tweede tabblad “Select Events”

5. Nu moeten we de gebeurtenissen en eigenschappen van deze gebeurtenissen specificeren die we in de trace willen zien.

We hebben query's en queryplannen nodig, dus we moeten de juiste gebeurtenissen inschakelen. Om een ​​volledige lijst met eigenschappen en gebeurtenissen weer te geven, schakelt u de vlaggen ‘Toon alle kolommen’ en ‘Toon alle gebeurtenissen’ in.

Beschrijving van evenementen:

ShowplanStatisticsProfile – uitvoeringsplan voor tekstquery’s

ShowplanXMLStatisticsProfile – grafisch query-uitvoeringsplan

RPC:Completed – verzoektekst als deze als procedure wordt uitgevoerd (als een 1C-verzoek met parameters wordt uitgevoerd).

SQL:BatchCompleted – querytekst als deze wordt uitgevoerd als een gewone query (als een 1C-query is uitgevoerd zonder parameters).

6. Nu moet je een filter voor evenementen instellen. Als dit niet gebeurt, zien we query's voor alle databases die zich op deze DBMS-server bevinden.

Klik op de knop “Kolomfilters” en specificeer een filter op databasenaam

Nu zullen we in de tracering alleen verzoeken zien naar de “TestBase_8_2” database

Indien gewenst kunt u filteren op andere velden, waarvan de interessantste zijn: Duration (Duration), TextData (meestal de tekst van het verzoek) en RowCounts (het aantal rijen dat door het verzoek wordt geretourneerd).

Als ik bijvoorbeeld alle verzoeken aan de tabel "_InfoRg4312" die langer dan 3 seconden duren in de database "TestBase_8_2" moet opvangen, doe ik het volgende:

a) Filter op database, voorbeeld hierboven

b) Filter op duur in milliseconden.

c) Filter op verzoektekst

Hier specificeren we het masker. Als u zoekopdrachten wilt bijhouden die toegang hebben tot meerdere tabellen, maakt u verschillende elementen aan in het gedeelte 'Vergelijkbaar met'. Alle filteromstandigheden werken samen.

7. Nu kunt u de tracering uitvoeren. Klik op “Uitvoeren”, waarna de tracering begint te werken en u de gebeurtenissen kunt zien die u hebt geconfigureerd om weer te geven en die onder uw filters vallen.

U kunt de knoppen op de opdrachtbalk gebruiken om de tracering te beheren.

Van links naar rechts:

Gum – wist het traceervenster

Start – start het traceren

Pauze – pauzeert het traceren; wanneer u op Start klikt, wordt het traceren hervat

Stop – stopt het traceren

8. Het traceervenster zelf bestaat uit twee delen. Bovenaan staan ​​evenementen en evenementeigenschappen.

In het onderste gedeelte wordt verschillende informatie weergegeven, afhankelijk van het type gebeurtenis. In ons geval wordt hier de tekst van de aanvraag of het plan weergegeven.

9. Laten we het verzoek uitvoeren in de 1C-queryconsole en kijken hoe dit wordt weerspiegeld in de profiler.

Uit de tracering blijkt dat er meerdere verzoeken waren en dat slechts één daarvan de onze was. Overige verzoeken zijn serviceverzoeken.

10. Uit de eigenschappen van de gebeurtenissen kunt u begrijpen: hoeveel seconden de query is uitgevoerd (Duration), hoeveel logische metingen er waren (Reads), hoeveel rijen de query als resultaat heeft geretourneerd (RowCounts), enz.

In mijn geval liep de query 2 milliseconden, voerde 4 logische lezingen uit en retourneerde 1 rij.

11. Als we één gebeurtenis omhoog gaan, kunnen we het queryplan in grafische vorm zien.

Zoals uit het plan blijkt, wordt er gezocht op index op prijs, hoewel dit plan niet ideaal kan worden genoemd, omdat de index dekt niet, de code- en naamvelden worden verkregen met behulp van KeyLookup, wat 50% van de tijd in beslag neemt.

Met behulp van het contextmenu kan het grafische plan worden opgeslagen als een afzonderlijk bestand met de extensie *.SQLPlan en worden geopend in een profiler op een andere computer of met behulp van het meer geavanceerde SQL Sentry Plan Explorer-programma.

12. Als we nog hoger gaan, zien we hetzelfde queryplan, maar dan in tekstvorm.

Het is dit plan dat wordt weergegeven in TZ, TsUP en andere 1C-tools voor prestatiemonitoring. Om het te analyseren, raad ik aan een geavanceerde teksteditor met achtergrondverlichting te gebruiken, zoals Notepad++.

a) In het formaat van de profiler zelf, d.w.z. met extensie *.trc

b) In XML-formaat

c) U kunt van de trace een sjabloon maken. Zie volgend punt.

Vervolgens moet u een database op de opgegeven server selecteren en de naam opgeven van de tabel waarin de tracering wordt opgeslagen. U kunt een bestaande tabel selecteren of een nieuwe naam schrijven, waarna de tabel automatisch in de geselecteerde database wordt aangemaakt.

Houd er rekening mee dat de duur in de tabel wordt opgeslagen in miljoensten van een seconde en dat het bij het weergeven van het resultaat raadzaam is om de waarde om te zetten in milliseconden. De kolom RowNumber wordt ook aan de tabel toegevoegd, waarin het nummer van deze rij in de tracering wordt weergegeven.

14. Als je de profiler vaak moet gebruiken om verzoeken te analyseren, wordt het instellen van de benodigde filters en evenementen snel saai en kost het ook veel tijd.

Traceersjablonen komen te hulp, waarbij we de filters specificeren die we nodig hebben en de volgorde van de kolommen, en vervolgens eenvoudigweg dit sjabloon selecteren bij het maken van een nieuwe tracering.

Om een ​​sjabloon aan te maken, gebruikt u het menu Bestand – Sjablonen – Nieuw sjabloon

Op het eerste tabblad is alles eenvoudig. We geven het servertype en de naam van de sjabloon aan en stellen, indien nodig, de vlag in om deze sjabloon standaard te gebruiken.

Op het tweede tabblad selecteren we evenementen en configureren we filters, zoals hierboven al weergegeven.

Nu kunt u bij het aanmaken van een nieuwe trace eenvoudig het benodigde sjabloon opgeven, waarna alle filters en gebeurtenissen automatisch worden ingevuld op het tweede tabblad.

Natuurlijk worden hier niet alle manieren getoond om deze prachtige tool te gebruiken; ik denk dat ik in de toekomst de verzameling artikelen over dit onderwerp zal uitbreiden.

Als je nog vragen hebt over het gebruik van SQL Profiler, stel ze dan in de reacties, ik beantwoord ze graag.

Vandaag zullen we de prestaties van onze applicatie meten met behulp van Visual Studio-profileringstool.

Visual Studio-profileringstool stelt ontwikkelaars in staat de prestaties van applicaties en code te meten en evalueren. Deze tools zijn volledig ingebouwd in de IDE om de ontwikkelaar naadloze controle te geven.
In deze tutorial profileren we de applicatie stap voor stap MensenTrax gebruiken Bemonstering En Instrumentatie Profileringstechnieken om problemen in de applicatieprestaties te identificeren.

Veel foto's.

Voorbereiding

Om met deze handleiding te werken, heeft u het volgende nodig:
  • Microsoft Visuele Studio 2010
  • Gemiddelde kennis van de C#-taal
  • Een kopie van de PeopleTrax-testapplicatie. U kunt deze downloaden via MSDN Code Gallery

Profileringsmethoden

Laten we een beetje afstand nemen van het hoofdonderwerp van het artikel en mogelijke profileringsmethoden overwegen. Dit hoofdstuk kan worden overgeslagen; de gebruikte profileringsmethoden worden vóór gebruik kort beschreven.
Bemonstering
Bemonstering— verzamelt statistische gegevens over de werking van de applicatie (tijdens profilering). Deze methode is licht van gewicht en daarom is er, als gevolg van de werking ervan, zeer weinig fout in de verkregen gegevens.

Elk bepaald tijdsinterval wordt informatie over de call-stack verzameld. Op basis van deze gegevens wordt de productiviteit berekend. Wordt gebruikt voor initiële profilering en om problemen met betrekking tot processorgebruik te identificeren.

Instrumentatie
Instrumentatie— verzamelt gedetailleerde informatie over de bedrijfstijd van elke opgeroepen functie. Wordt gebruikt om de prestaties van I/O-bewerkingen te meten.

De methode sluit de code in een binair bestand in dat timinginformatie registreert voor elke functie in het bestand, en voor elke functie die daarin wordt aangeroepen.

Het rapport bevat 4 waarden om de verstreken tijd weer te geven:

  • Verstreken Inclusief- totale tijd besteed aan het uitvoeren van de functie
  • Toepassing Inclusief- de tijd die is besteed aan het uitvoeren van een functie, exclusief de tijd van oproepen naar het besturingssysteem.
  • Verstreken exclusief- tijd besteed aan het uitvoeren van code in het lichaam. De tijd die wordt besteed aan functies die door de doelfunctie worden aangeroepen.
  • Exclusief voor toepassing- tijd besteed aan het uitvoeren van code in het lichaam. Exclusief de tijd die is besteed aan het uitvoeren van besturingssysteemaanroepen en de tijd die is besteed aan het uitvoeren van functies die door de doelfunctie worden aangeroepen.
Gelijktijdigheid
Gelijktijdigheid– verzamelt informatie over multi-threaded applicaties (voor het debuggen van multi-threaded applicaties, zie de "Guide to Debugging Multi-threaded Applications in Visual Studio 2010"). De methode verzamelt gedetailleerde call-stack-informatie wanneer concurrerende threads worden gedwongen te wachten op toegang tot een bron.
.NET-geheugen
.NET-geheugen- De profiler verzamelt informatie over het type, de grootte en het aantal objecten die in de distributie zijn gemaakt of zijn vernietigd door de garbage collector. Geheugenprofilering heeft vrijwel geen invloed op de prestaties van de applicatie als geheel.
Niveau-interactie
Niveau-interactie– voegt informatie toe aan het profileringsbestand over synchrone oproepen ADO.NET tussen de pagina ASP.NET of andere toepassingen en SQL server. De gegevens omvatten het aantal en de tijd van de oproepen, evenals de maximale en minimale tijd.

Hiermee is onze beschouwing van profileringsmethoden afgerond en zullen we verder leren hoe we toepassingen kunnen profileren.

Profilering door bemonsteringsmethode

Sampling is een profileringstechniek die periodiek het betreffende proces bevraagt ​​om de actieve functie te bepalen. Het resultaat toont het aantal keren dat de functie tijdens het testen bovenaan de call-stack stond.
Profilering
Open een testproject MensenTrax. Stel de configuratie in op Uitgave(Aanvullende informatie is ingebouwd in de Debug-versie om fouten in de toepassing op te sporen, en dit zal een slecht effect hebben op de nauwkeurigheid van de profileringsresultaten).

Op het menu Analyseren klik op Start de Prestatiewizard.

Bij deze stap moet u een profileringsmethode selecteren. Selecteer CPU-sampling (aanbevolen) en klik op Volgende.

Wij kiezen welke applicatie we gaan profileren, dit is MensenTrax en de knop Volgende. Klik vervolgens op Voltooien en de profiler en onze applicatie worden automatisch gestart. Op het scherm zien we het PeopleTrax-programma. Druk op de knop Krijg mensen, wacht tot het werk is voltooid en Gegevens exporteren. Sluit Kladblok en het programma en de profiler genereren een rapport.

De profiler heeft een rapport gegenereerd (*.vsp)

Analyse van het rapport Bemonsteringsmethode
IN Samenvatting er wordt gedurende de profileringstijd een grafiek van het CPU-gebruik weergegeven. Lijst Heet pad toont de gespreksthreads die de meeste activiteit vertoonden. En op de lijst Functies die het meeste individuele werk doen(waarvan de naam voor zich spreekt) - functies die b O langere verwerkingstijd in de body van deze functies.

Kijkend naar de lijst Heet pad we zien dat de methode MensenNS.People.GetNames bezet bijna de laatste plaats in de uitdagingsthread. Vervolgens kan het nader worden bestudeerd om de prestaties te verbeteren. Klik op MensenNS.People.GetNames en het gaat voor ons open Functiedetails.

Dit venster bestaat uit twee delen. Het kostenvenster biedt een grafische weergave van hoe functies werken en de bijdrage van de functie en de aanroepen ervan aan het aantal exemplaren dat is bemonsterd. U kunt de betreffende functie wijzigen door erop te klikken met de muis.

Functiecodeweergave toont de methodecode wanneer deze beschikbaar is en markeert de duurste regels in de geselecteerde methode. Wanneer een methode is geselecteerd Namen ophalen het is duidelijk dat het strings van applicatiebronnen leest met behulp van StringReader, waarbij elke regel wordt toegevoegd ArrayLijst. Er zijn geen voor de hand liggende manieren om dit onderdeel te verbeteren.

Omdat MensenNS.People.GetPeople de enige die belt Namen ophalen– druk Ontvang Mensen. Deze methode retourneert ArrayLijst voorwerpen PersoonInformatieNS.PersonInformatie met de namen van mensen en bedrijven die door de methode worden geretourneerd Namen ophalen. Hoe dan ook, Namen ophalen elke keer dat het wordt gemaakt, twee keer gebeld Persoonsinformatie. (Dit wordt weergegeven door de gele en rode markering). Uiteraard kunt u de methode eenvoudig optimaliseren door de lijsten slechts één keer aan het begin van de methode aan te maken.

Alternatieve versie Ontvang Mensen zit ook in de code en we zullen het nu inschakelen. Om dit te doen, moet je bepalen GEOPTIMALISEERDE_GETPEOPLE als voorwaardelijk compilatiesymbool in het venster met projecteigenschappen Mensen En MensenTrax. En ja, als je mijn experimenten wilt herhalen, moet je de fout in het project corrigeren. In de geoptimaliseerde klasseconstructor wordt de naam van de bronnen niet correct geschreven: u hebt PeopleNS.Resources nodig samen met PeopleNS.Resource. Als dit niet wordt veranderd, zal alles eindigen met vreselijke fouten.

De geoptimaliseerde methode zal de oude vervangen bij de volgende build.

Start het profileren opnieuw in de huidige sessie door op te klikken Start met profilering in het raam Prestatieverkenner. Klik op Krijg mensen En Gegevens exporteren. Sluit Kladblok en het programma en de profiler genereren een nieuw rapport.

Als u twee rapporten wilt vergelijken, selecteert u beide en RMB Vergelijk prestatierapporten. De deltakolom toont het verschil in versieprestaties Basislijn van later Vergelijking. Kiezen Inclusief monsters % en Toepassen.

Zoals u kunt zien, is de prestatiewinst met het blote oog waarneembaar

Profilering met behulp van de instrumentatiemethode

Deze methode is handig voor het profileren van I/O, schijfschrijfbewerkingen en netwerkcommunicatie. Deze methode levert meer informatie op dan de vorige, maar brengt meer overhead met zich mee. De binaire bestanden die worden verkregen na het invoegen van aanvullende code zijn groter dan normaal en zijn niet bedoeld voor implementatie.

Deze keer zullen we onze analyse concentreren op de gegevensexport, waarbij een lijst met mensen naar een notitieblokbestand wordt geschreven.

Profilering
IN Prestatieverkenner kiezen Instrumentatie en klik op Profiling starten. Klik op Mensen ophalen. Wacht na het laden van personen 10 seconden en klik op Gegevens exporteren. Sluit Kladblok en het programma. De profiler genereert een rapport.
Analyse
De profiler laat deze foto zien:

We kregen niet de informatie die we wilden. Laten we de gegevens filteren. We hebben specifiek 10 seconden gewacht om eenvoudigweg de profileringsgegevens eruit te filteren die niet langer nodig waren. Markeer vanaf de 13e tot het einde en druk op Filter op selectie. Nog een resultaat:

Heet pad laat zien dat de methode Concat kost veel tijd (het staat ook bovenaan de lijst met functies met het meeste individuele werk). Klik op Concat om gedetailleerde informatie over de methode te bekijken.

Dat is duidelijk PeopleTrax.Form1.ExportData is de enige methode die aanroept Concat. Klik PeopleTrax.Form1.ExportData bij het aanroepen van methoden ( Functie die deze functie aanroept).

Laten we de methode in het codevenster analyseren. Houd er rekening mee dat er geen directe oproep naar Concat is. Daarnaast is er het gebruik van de operand += , die de compiler vervangt door methoden System.String.Concat. Zoals bijna iedereen al weet, resulteren alle wijzigingen in strings in .NET in de vernietiging van de oude versie van de string en het creëren van een aangepaste string. Gelukkig heeft .NET een klasse StringBuilder die voor dit soort werk is ontworpen.

Het project beschikt al over een geoptimaliseerde methode StringBuilder. Voeg in het PeopleTrax-project een compilatievariabele toe GEOPTIMALISEERDE_EXPORTDATA. We slaan de profiler op, voeren deze opnieuw uit en vergelijken de rapporten. Het is meteen duidelijk (en logisch begrijpelijk) dat we de Concat-oproepen hebben geoptimaliseerd (van 6000 naar 0 keer).

Na het starten van de applicatie ziet u een merkbare verbetering in de prestaties. Het is van groot belang om de profilering opnieuw uit te voeren, ook als er zichtbare verbeteringen zijn. Het beoordelen van nieuwe gegevens nadat het probleem is opgelost, kan andere problemen in de prestaties van de toepassing aan het licht brengen.

Een van mijn favoriete tools is SQL Server Profiler, vaak simpelweg Profiler genoemd. Dit hulpprogramma geeft gegevens weer over een willekeurig aantal gedetailleerde SQL Server-gebeurtenissen. Deze servergebeurtenissen kunnen worden bekeken in het venster Trace-eigenschappen (Afbeelding 49.3) en ook worden vastgelegd in een bestand of tabel voor latere analyse. Filters kunnen worden ingesteld om alle gebeurtenissen of een geselecteerde subset daarvan op te nemen.

Puc. 49.2. In dit voorbeeld zal het tellerprotocol informatie registreren

over de prestaties van SQL Server in de map C:\Perf Logs

U kunt SQL Server Profiler starten vanuit het menu Extra in Management Studio of rechtstreeks vanuit de map SQL Server 2005 in het menu Start. Om de activiteit te bekijken, moet u een nieuwe tracering definiëren of een bestaand bestand gebruiken.

Met de release van SP1 ontving SQL Server Profiler de Let op! traceer grote datasets op grote computers.

Bovendien werd de tijd voorheen bij het monitoren van de analyseservice weergegeven in Universal Time Time (UTC)-eenheden. De lokale systeemtijd wordt nu gebruikt. Voorheen werden succesvol gereproduceerde gebeurtenissen niet correct geteld, waardoor de gebruiker onjuiste statistieken ontving. Dit probleem is opgelost.

Een nieuw spoor definiëren

Wanneer een nieuwe tracering wordt gemaakt (via de menuopdracht Bestand^Nieuwe tracering of met de werkbalkknop Nieuwe tracering), wordt er ook een nieuwe verbinding met SQL Server gemaakt en wordt het dialoogvenster Trace-eigenschappen geopend (Afbeelding 49.4). Op het tabblad Algemeen van dit venster wordt de tracering geconfigureerd (met name de naam, bestandslocatie, enz.) en op het tabblad Gebeurtenisselectie worden de te loggen gebeurtenissen, gegevens en filters gedefinieerd. Als de tracering actief is, kunnen deze parameters worden bekeken, maar niet worden gewijzigd. Een traceringsconfiguratie kan als sjabloon worden opgeslagen, zodat u in de toekomst eenvoudiger nieuwe traceringen kunt maken.

Rijst. 49,4. Op het tabblad Gebeurtenisselectie van het venster Trace-eigenschappen kunt u gebeurtenissen selecteren die worden bijgehouden door het hulpprogramma Profiler

De tracering kan in realtime worden bekeken, maar de gegevens kunnen tegelijkertijd naar een SQL Server-bestand of -tabel worden geschreven. Dit is handig voor latere mining, vergelijking met tellergegevens van de systeemmonitor of import in het hulpprogramma Database Engine Tuning Advisor.

Wanneer metingen naar een bestand worden geschreven, worden ze samengevoegd in ketens van 128 KB om de prestaties te verbeteren; Op dezelfde manier worden gegevens bij het schrijven naar een tabel in verschillende rijen gegroepeerd.

Om de gegevens die door Profiler zijn vastgelegd op te slaan voor latere analyse, gebruikt u de krachtige bestandsmethode en servertracering (we zullen hier later over praten). Als u gegevens wilt analyseren met behulp van T-SQL-instructies, gebruikt u precies dezelfde aanpak, maar opent u na het voltooien van de traceringssessie het resulterende bestand in het hulpprogramma Profiler en selecteert u Bestand^Opslaan als^Tabel in het menu.

Gebeurtenisselectie

Het tabblad Gebeurtenisselectie bepaalt de lijst met acties die worden uitgevoerd door de databaseserver en die worden vastgelegd door het hulpprogramma Profiler. Net als bij Prestatiemeter kan Profiler veel belangrijke SQL Server-gebeurtenissen monitoren. Om de selectie-instellingen te vereenvoudigen, kunt u de standaardsjablonen gebruiken.

I De gebeurtenis SQL Batch Completed is gebaseerd op de uitvoering van T-SQL-batches in

SVS als geheel (pakketten gescheiden door terminators), en niet individuele instructies.

| * Op basis hiervan registreert Profiler gegevens over slechts één gebeurtenis, hoe dan ook

Simo afhankelijk van de lengte van het pakket. Om de uitvoering van individuele instructies vast te leggen

DML gebruikt de gebeurtenis SQL Statement Complete.

Niet alle gebeurtenissen kunnen worden gebruikt om een ​​spoor te reproduceren. De SQL Batch Start-gebeurtenis kan bijvoorbeeld opnieuw worden afgespeeld, maar de SQL Batch Complete-gebeurtenis niet.

Afhankelijk van de gebeurtenissen zijn er verschillende gegevens beschikbaar voor tracering. Hoewel de SPID-gegevenskolom optioneel lijkt, is deze misleidend;

Gebeurtenisfiltering

Het Profiler-programma is in staat zoveel informatie voor u te verzamelen dat het gemakkelijk in een oogwenk een schijfstation kan vullen. Gelukkig helpt het filter van het programma (Figuur 49.5) u deze array te beperken tot alleen de gegevens die u interesseren.

Rijst. 49,6. SQL Server Profiler kan prestatiemonitorgegevens integreren en synchroniseren met bewaakte gebeurtenissen

Met behulp van SQL-trace

SQL Profiler wordt doorgaans interactief gebruikt en is voldoende voor het periodiek verzamelen van gegevens. Langdurige traceringen kunnen echter gemakkelijk honderdduizenden records verzamelen, wat zeer specifieke problemen kan veroorzaken op het werkstation waarop de tracering wordt uitgevoerd. De oplossing komt neer op het rechtstreeks op de server aanmaken van een traceerlogboek. Deze tracering zal een kleine extra belasting van de server veroorzaken; in dit geval worden de bestanden geschreven in blokken van 128 KB.

In industriële systemen die tracering aan de serverzijde uitvoeren, is het schrijven van gegevens naar een bestand op de server de beste manier om informatie te verzamelen

over de prestaties en tegelijkertijd de extra belasting van de server minimaliseren.

Tracering die op de server wordt uitgevoerd, kan worden gedefinieerd en geïmplementeerd met behulp van een reeks in het systeem opgeslagen procedures. U kunt de programmacode zelf schrijven of het programma SQL Server Profiler gebruiken.

Zodra de tracering is geconfigureerd en getest in SQL Server Profiler, selecteert u Bestand^Exporteren^Trace Definition^For SQL Server 2005 in het menu om een ​​T-SQL-script te genereren dat tracering op de server kan uitvoeren.

I Om erachter te komen welke sporen op de server actief zijn, vraagt ​​u de

SVS-namische weergave van besturingssystemen. Wanneer u naar de I*-resultaten van deze zoekopdracht kijkt, ziet u aanvullende traceback. Het eerste *-nummer is altijd de zogenaamde standaardtracering, die gegevens verzamelt voor SQL Server-logboeken. Deze kan niet worden gestopt.

Om de servertracering te stoppen, gebruikt u de door het systeem opgeslagen procedure sp_trace_setstatus. Het eerste argument (traceid) is de trace-ID, en het tweede bepaalt de aard van de actie. Een waarde van nul voor de actieparameter zorgt ervoor dat de tracering stopt, een waarde van één om deze te starten en een waarde van twee om deze te sluiten en te verwijderen. De volgende code stopt tracenummer 2.

In deze lezing zullen we de studie van opgeslagen procedures voortzetten die we zijn begonnen in ‘Opgeslagen procedures creëren en beheren’. U leert hoe u opgeslagen procedures en andere T-SQL-instructies analyseert met behulp van de Microsoft SQL Server Query Analyzer en de SQL Server Profiler. Op basis van deze analyse kunt u bepalen hoe effectief T-SQL-instructies zijn. Een efficiënte SQL Server-query gebruikt de juiste volgorde van bewerkingen en passende indexen om het aantal verwerkte rijen te verminderen en het aantal I/O-bewerkingen te minimaliseren.

Met Query Analyzer kunt u het geselecteerde uitvoeringsplan voor een T-SQL-instructie bekijken query-optimalisatie SQL-server Query-optimalisatie is een interne module die voor elke T-SQL-instructie zoekt naar het beste uitvoeringsplan. Query-optimalisatie analyseert elke T-SQL-instructie, bekijkt een aantal mogelijke uitvoeringsplannen en evalueert de "kosten" van elk plan in termen van vereiste middelen en verwerkingstijd. Het plan met de laagste kosten wordt geselecteerd. De kosten van elk plan worden bepaald op basis van de beschikbare statistieken, die door het systeem worden verzameld en mogelijk verouderd zijn. Omdat u wellicht meer over uw database en uw gegevens weet dan query-optimalisatie, dan kunt u mogelijk een plan maken dat beter is dan de queryoptimalisatie. Met behulp van de informatie die Query Analyzer produceert, kunt u bepalen of het plan van de query-optimalisatie voor een bepaalde instructie effectief zal zijn. Als dit niet het geval is, kunt u proberen die instructie te optimaliseren door deze aan te passen of SQL-hints te gebruiken. In deze lezing leert u hoe u T-SQL-instructies kunt optimaliseren en leert u ook Query Analyzer gebruiken.

Met Profiler kunt u bewerkingen binnen uw SQL Server-systeem analyseren om te bepalen welke SQL-instructies en opgeslagen procedures onnodige systeembronnen gebruiken. Met deze informatie kunt u uw afstemmingsinspanningen primair richten op deze verklaringen en opgeslagen procedures. Naast een beschrijving van het gebruik van Profiler, laat deze lezing ook zien hoe u de informatie die u met Profiler verkrijgt, zo effectief mogelijk kunt gebruiken.

Met behulp van SQL Query-analysator

Het hulpprogramma Query Analyzer wordt ter vervanging meegeleverd met Microsoft SQL Server 2000