Övervakning av effektiviteten hos MS SQL Server. Praktiska rekommendationer. Använda SQL Profiler

I vårt arbete stöter vi ganska ofta på en situation där en viss fråga går långsamt, och inga uppenbara problem syns i frågetexten. Vanligtvis i detta fall är det nödvändigt att undersöka problemet på en djupare nivå. Som regel blir det nödvändigt att titta på texten i SQL-frågan och dess plan, och det är här SQLProfiler hjälper oss.

Vad är SQL Profiler och varför behövs det överhuvudtaget

SQLProfiler är ett program som följer med MS SQL Server och den är avsedd för att visa alla händelser som inträffar i SQL-servern eller, med andra ord, för att spela in spår. Varför skulle en 1C-programmerare behöva SQLProfiler? Åtminstone för att få frågetexten i SQL och se dess plan. Det går givetvis också att göra med hjälp av en tekniktidning, men det kräver viss kompetens och planen i TJ är inte så vacker och läsvärd. I profilern kan du inte bara se en text utan också en grafisk utförandeplan för frågor, vilket enligt min mening är mycket bekvämare. Du kan också använda profileraren för att avgöra: förfrågningar som är längre än en viss tid begär till ett specifikt väntebord om tidsgränser för låsta låsningar och mycket mer ...

Frågeanalys med SQL Profiler

Oftast används profileraren specifikt för frågeanalys. Som regel behöver vi inte spåra alla frågor, vi behöver ofta se hur en viss fråga i 1C-språket översätts till SQL, och se dess utförandeplan. Detta kan till exempel vara nödvändigt för att avgöra varför en fråga körs långsamt, eller så har vi skrivit en stor fråga och vill försäkra oss om att SQL-frågans kropp inte innehåller subquery-joins. För att fånga begäran i spåret, gör följande:

1. Starta SQL Profiler Start - Alla program - Microsoft SQL Server 2008 R2 - Prestandaverktyg - SQLProfiler
2. Skapa en ny spårningsfil - Skapa spårning (Ctrl+N)
3. Ange vilken DBMS-server som vår databas finns på och klicka på "Anslut".

Naturligtvis hindrar ingenting dig från att spåra en DBMS-server som finns på en annan dator. 4. I det visade fönstret "Spåra egenskaper" gå till den andra fliken "Välj händelser"

5. Nu måste du specificera händelserna och egenskaperna för dessa händelser som vi vill se i spåret. Vi behöver frågor och frågeplaner, så vi måste aktivera lämpliga händelser. För syns skull komplett lista egenskaper och händelser, aktivera flaggorna "Visa alla kolumner" och "Visa alla händelser". Därefter behöver du bara välja de händelser som visas i figuren nedan, alla andra händelser måste inaktiveras.


Beskrivning av händelser: ShowplanStatisticsProfile - exekveringsplan för textfrågor.
ShowplanXMLStatisticsProfile - grafisk exekveringsplan för frågor.
RPC:Completed - begärantext, om den exekveras som en procedur (om en 1C-begäran exekveras med parametrar).
SQL:BatchCompleted - frågetext om den körs som en normal fråga (om en 1C-fråga exekveras utan parametrar).

6. Nu måste du konfigurera filtret för händelser. Om detta inte görs kommer vi att se frågor för alla databaser som finns på denna DBMS-server. Klicka på knappen "Kolumnfilter" och ange ett filter efter databasnamn

Nu ser vi i spåret endast frågor till databasen "TestBase_8_2". Om du vill kan du sätta ett filter på andra fält, de mest intressanta av dem: Duration (Duration), TextData (vanligtvis frågetexten) och RowCounts ( antal rader som returneras av frågan).

Till exempel, om jag behöver fånga alla förfrågningar till tabellen "_InfoRg4312" som varar mer än 3 sekunder i databasen "TestBase_8_2", så gör jag:
a) Filtrera efter databas, exemplet visas ovan
b) Filtrera efter varaktighet i millisekunder.

C) Filtrera efter förfrågningstext


Här specificerar vi masken. Om du behöver spåra frågor som har åtkomst till flera tabeller, skapa sedan flera objekt i avsnittet "Ser ut". Villkoren för alla filter samverkar.

7. Nu kan du börja spåra. Klicka på "Start", efter det börjar spårningen att fungera och du kan se de händelser som du konfigurerat att visa och som faller under dina filter. Du kan använda knapparna på kommandofältet för att styra spårning.


Från vänster till höger: Eraser - rensar spårningsfönstret, Start - startar spårning, Paus - pausar spårning, tryck på Start återupptar spårning, Stop - stoppar spårning

8. Själva spårfönstret består av två delar. Evenemang och evenemangsfastigheter finns i den övre delen. Den nedre delen visar olika information beroende på typen av händelser. I vårt fall kommer antingen texten i begäran eller dess plan att visas här.

9. Kör frågan i 1C-frågekonsolen och se hur den återspeglas i profileraren.


Spåret visar att det fanns flera förfrågningar, och endast en av dem är vår. Resten av förfrågningarna är service.

10. Genom händelsernas egenskaper kan du förstå: hur många sekunder frågan kördes (Duration), hur många logiska avläsningar (Reads) det fanns, hur många rader frågan returnerade som ett resultat (RowCounts), etc. I mitt fall tog frågan 2 millisekunder, gjorde 4 logiska läsningar och returnerade 1 rad.

11. Om vi ​​går upp en händelse kan vi se frågeplanen grafiskt.
Som framgår av planen utförs sökningen efter index efter pris, även om denna plan inte kan kallas idealisk, eftersom. indexet täcker inte, kod- och namnfälten erhålls med hjälp av KeyLookup, vilket tar 50 % av tiden.


Använder sig av innehållsmeny, kan den grafiska planen sparas i separat fil med tillägget *.SQLPlan och öppna det i en profilerare på en annan dator eller med det mer avancerade programmet SQL Sentry Plan Explorer.

12. Om vi ​​går ännu högre kommer vi att se samma frågeplan, men i textform. Det är denna plan som visas i TJ, TsUP och andra 1C prestandakontroller. För att analysera det rekommenderar jag att du använder avancerad textredigerare med markering, som Notepad++.

13. Genom att använda menyn "File-Save As" kan hela spårningen sparas till olika format:
a) Till formatet för själva profileraren, dvs. med *.trc förlängning
b) Till xml-format
c) Du kan göra en mall av spåret. Se nästa stycke.
d) Du kan spara spåret som en databastabell. Bekvämt sätt, om vi till exempel behöver hitta den långsammaste begäran i hela spåret, eller välja förfrågningar med någon parameter. Arkiv - Spara som - Spårningstabell - Välj en DBMS-server och anslut till den. Därefter måste du välja en databas på den angivna servern och ange namnet på tabellen där spårningen ska sparas. Du kan välja en befintlig tabell, eller skriva ett nytt namn och sedan skapas tabellen automatiskt i den valda databasen.

I det här fallet bör det beaktas att Duration lagras i tabellen i miljondelar av en sekund och när resultatet visas är det önskvärt att konvertera värdet till millisekunder. Kolumnen RowNumber läggs också till i tabellen, som visar numret på den givna raden i spåret.

14. Om du ofta behöver använda profilern för att analysera förfrågningar, kommer det snabbt att bli tråkigt att ställa in de nödvändiga filtren och händelserna och dessutom ta mycket tid. Spårningsmallar kommer till undsättning, där vi anger vilka filter vi behöver och ordningen på kolumnerna, och väljer sedan helt enkelt denna mall när vi skapar ett nytt spår. För att skapa en mall, använd menyn Arkiv - Mallar - Ny mall

På den första fliken är allt enkelt. Ange servertyp, mallnamn och, om nödvändigt, ställ in en flagga för att använda denna mall som standard. På den andra fliken väljer vi händelser och ställer in filter, som redan visas ovan. Jag rekommenderar också att du justerar ordningen på kolumnerna i spåret, detta sparar tid vid analys av frågor. Till exempel tycker jag att det är bekvämare att använda följande ordning.

Nu, när du skapar ett nytt spår, kan du helt enkelt ange önskad mall, efter det, på den andra fliken, kommer alla filter och händelser att fyllas i automatiskt.

Naturligtvis visas långt ifrån alla sätt att använda detta underbara verktyg här, om det finns intresse från publiken, kommer det i framtiden att vara möjligt att fylla på samlingen av artiklar om detta ämne.

I vårt arbete stöter vi ganska ofta på en situation där en viss förfrågan går långsamt, och inga uppenbara problem syns i förfrågans text. Vanligtvis i detta fall är det nödvändigt att undersöka problemet på en djupare nivå. Som regel blir det nödvändigt att titta på texten i SQL-frågan och dess plan, och det är här SQL Profiler hjälper oss.

Vad är SQL Profiler och varför behövs det överhuvudtaget.

SQL Profiler är ett program som följer med MS SQL Server och är designat för att se alla händelser som inträffar i SQL Server eller, med andra ord, för att spela in ett spår.

Varför skulle en 1C-programmerare behöva SQL Profiler?

Åtminstone för att få frågetexten i SQL och se dess plan. Det går givetvis också att göra med hjälp av en tekniktidning, men det kräver viss kompetens och planen i TJ är inte så vacker och läsvärd.

I profilern kan du inte bara se en text utan också en grafisk utförandeplan för frågor, vilket enligt min mening är mycket bekvämare.

Du kan också använda profileraren för att:

begär längre än en viss tid

frågor mot en specifik tabell

väntar på block

timeouts

dödlägen

och mycket mer…

Frågeanalys med SQL Profiler

Oftast används profileraren specifikt för frågeanalys. Som regel behöver vi inte spåra alla frågor, vi behöver ofta se hur en viss fråga i 1C-språket översätts till SQL, och se dess utförandeplan. Detta kan till exempel vara nödvändigt för att avgöra varför en fråga körs långsamt, eller så har vi skrivit en stor fråga och vill försäkra oss om att SQL-frågans kropp inte innehåller subquery-joins.

För att fånga begäran i spåret, gör följande:

1. Kör SQL Profiler

Start - Alla program - Microsoft SQL Server 2008 R2 - Prestandaverktyg - SQL Profiler

2. Skapa ett nytt spår

Arkiv - Skapa spår (Ctrl+N)
3. Ange vilken DBMS-server som vår databas finns på och klicka på "Anslut".

Naturligtvis hindrar ingenting dig från att spåra en DBMS-server som finns på en annan dator.

4. I det visade fönstret "Spåra egenskaper" gå till den andra fliken "Välj händelser"

5. Nu måste du specificera händelserna och egenskaperna för dessa händelser som vi vill se i spåret.

Vi behöver frågor och frågeplaner, så vi måste aktivera lämpliga händelser. För att visa hela listan över egenskaper och händelser, aktivera flaggorna "Visa alla kolumner" och "Visa alla händelser".

Beskrivning av händelser:

ShowplanStatisticsProfile - exekveringsplan för textfrågor

ShowplanXMLStatisticsProfile - grafisk exekveringsplan för frågor

RPC:Completed - begärantext, om den exekveras som en procedur (om en 1C-begäran exekveras med parametrar).

SQL:BatchCompleted – frågetext om den körs som en normal fråga (om en 1C-fråga kördes utan parametrar).

6. Nu måste du konfigurera filtret för händelser. Om detta inte görs kommer vi att se frågor för alla databaser som finns på denna DBMS-server.

Klicka på knappen "Kolumnfilter" och ange ett filter efter databasnamn

Nu kommer vi att se i spåret endast frågor till databasen "TestBase_8_2"

Om så önskas kan du sätta ett filter på andra fält, de mest intressanta av dem: Duration (Duration), TextData (vanligtvis är detta frågetexten) och RowCounts (antalet rader som returneras av frågan).

Till exempel, om jag behöver fånga alla förfrågningar till tabellen "_InfoRg4312" som varar mer än 3 sekunder i databasen "TestBase_8_2", så gör jag:

a) Filtrera efter databas, exemplet visas ovan

b) Filtrera efter varaktighet i millisekunder.

c) Filtrera efter förfrågningstext

Här specificerar vi masken. Om du behöver spåra frågor som har åtkomst till flera tabeller, skapa sedan flera objekt i avsnittet "Ser ut". Villkoren för alla filter samverkar.

7. Nu kan du börja spåra. Klicka på "Start", efter det börjar spårningen att fungera och du kan se de händelser som du har konfigurerat att visa och som faller under dina filter.

Du kan använda knapparna på kommandofältet för att styra spårning.

Från vänster till höger:

Eraser - rensar spårningsfönstret

Start - börjar spåra

Paus - pausar spårningen, när du klickar på Start återupptas spårningen

Stopp - slutar spåra

8. Själva spårfönstret består av två delar. Evenemang och evenemangsfastigheter finns i den övre delen.

Den nedre delen visar olika information beroende på typen av händelser. I vårt fall kommer antingen texten i begäran eller dess plan att visas här.

9. Kör frågan i 1C-frågekonsolen och se hur den återspeglas i profileraren.

Spåret visar att det fanns flera förfrågningar, och endast en av dem är vår. Resten av förfrågningarna är service.

10. Genom händelsernas egenskaper kan du förstå: hur många sekunder frågan kördes (Duration), hur många logiska avläsningar (Reads) det fanns, hur många rader frågan returnerade som ett resultat (RowCounts), etc.

I mitt fall tog frågan 2 millisekunder, gjorde 4 logiska läsningar och returnerade 1 rad.

11. Om vi ​​går upp en händelse kan vi se frågeplanen grafiskt.

Som framgår av planen utförs sökningen efter index efter pris, även om denna plan inte kan kallas idealisk, eftersom. indexet täcker inte, kod- och namnfälten erhålls med hjälp av KeyLookup, vilket tar 50 % av tiden.

Med hjälp av snabbmenyn kan den grafiska planen sparas i en separat *.SQLPlan-fil och öppnas i en profilerare på en annan dator eller med det mer avancerade programmet SQL Sentry Plan Explorer.

12. Om vi ​​går ännu högre kommer vi att se samma frågeplan, men i textform.

Det är denna plan som visas i TJ, TsUP och andra 1C prestandakontroller. För att analysera det rekommenderar jag att du använder en avancerad textredigerare med markering, som Notepad++.

a) Till formatet för själva profileraren, dvs. med *.trc förlängning

b) Till xml-format

c) Du kan göra en mall av spåret. Se nästa stycke.

Därefter måste du välja en databas på den angivna servern och ange namnet på tabellen där spåret ska sparas. Du kan välja en befintlig tabell, eller skriva ett nytt namn och sedan skapas tabellen automatiskt i den valda databasen.

I det här fallet bör man komma ihåg att Duration lagras i tabellen i miljondelar av en sekund och när resultatet visas är det lämpligt att konvertera värdet till millisekunder. Kolumnen RowNumber läggs också till i tabellen, som visar numret på den givna raden i spåret.

14. Om du ofta behöver använda profilern för att analysera förfrågningar, kommer det snabbt att bli tråkigt att sätta upp nödvändiga filter och händelser och dessutom ta mycket tid.

Spårningsmallar kommer till undsättning, där vi anger de filter vi behöver och ordningen på kolumnerna, och väljer sedan helt enkelt denna mall när vi skapar ett nytt spår.

För att skapa en mall, använd menyn Arkiv - Mallar - Ny mall

På den första fliken är allt enkelt. Ange servertyp, mallnamn och, om nödvändigt, ställ in en flagga för att använda denna mall som standard.

På den andra fliken väljer vi händelser och ställer in filter, som redan visas ovan.

Nu, när du skapar ett nytt spår, kan du helt enkelt ange önskad mall, efter det, på den andra fliken, kommer alla filter och händelser att fyllas i automatiskt.

Naturligtvis visas långt ifrån alla sätt att använda detta underbara verktyg här, jag tror att jag i framtiden kommer att lägga till samlingen av artiklar om detta ämne.

Om du fortfarande har frågor om att använda SQL Profiler, ställ dem i kommentarerna, jag svarar gärna.

Idag kommer vi att mäta prestandan för vår applikation med hjälp av visuell Studio Profileringsverktyg.

Visual Studio profileringsverktyg tillåter utvecklare att mäta, utvärdera applikationens och kodens prestanda. Dessa verktyg är helt inbyggda i IDE för att ge utvecklaren oavbruten kontroll.
I den här handledningen kommer vi att profilera ansökan steg för steg. PeopleTrax använder sig av Provtagning och Instrumentation profileringstekniker för att identifiera problem i applikationsprestanda.

Många bilder.

Träning

För att slutföra den här guiden behöver du:
  • Microsoft Visual Studio 2010
  • Medellång kunskap i C#
  • En kopia av PeopleTrax testapplikation, nedladdningsbar från MSDN Code Gallery

Profileringsmetoder

Låt oss avvika lite från huvudämnet i artikeln och överväga möjliga profileringsmetoder. Det här kapitlet kan hoppas över, profileringsmetoderna som används kommer att beskrivas kort innan användning.
Provtagning
Provtagning— samlar in statistiska uppgifter om applikationens funktion (under profilering). Denna metod är lätt och därför, som ett resultat av dess arbete, finns det ett mycket litet fel i de erhållna uppgifterna.

Varje visst tidsintervall samlas in information om samtalsstacken (samtalsstacken). Baserat på dessa data beräknas prestanda. Används för initial profilering och för att identifiera problem relaterade till CPU-användning.

Instrumentation
Instrumentation- samlar in detaljerad information om körtiden för varje anropad funktion. Används för att mäta prestanda för I/O-operationer.

Metoden injicerar sin kod i en binär fil som fångar tidsinformation (tid) för varje funktion i filen, och för varje funktion som anropas i den.

Rapporten innehåller 4 värden för att ge förfluten tid:

  • Förfluten inklusive- den totala tiden som ägnas åt att utföra funktionen
  • Ansökan inklusive- tiden som spenderas på att utföra funktionen, exklusive tiden för samtal till operativsystemet.
  • Förfluten Exklusiv- den tid som ägnas åt att exekvera koden i kroppen. Den tid som de funktioner som anropas av målfunktionen spenderar.
  • Ansökan exklusiv- den tid som ägnas åt att exekvera koden i kroppen. Eliminerar tid som ägnas åt att ringa operativ system och tiden det tar att utföra de funktioner som anropas av målfunktionen.
Samtidighet
Samtidighet– samlar information om flertrådade applikationer (hur man felsöker flertrådade applikationer, se "Guide för att felsöka flertrådade applikationer i Visual Studio 2010"). Metoden samlar in detaljerad information om anropsstacken varje gång konkurrerande trådar tvingas vänta på att få tillgång till en resurs.
.NET-minne
.NET-minne- Profileraren samlar in information om typ, storlek och antal objekt som skapades i tilldelningen eller förstördes av sophämtaren. Minnesprofilering har liten eller ingen effekt på den övergripande applikationens prestanda.
Nivåinteraktion
Nivåinteraktion- lägger till information till profileringsfilen om synkrona samtal ADO.NET mellan sidan ASP.NET eller andra applikationer och SQL server. Uppgifterna inkluderar antalet och tidpunkten för samtal, samt max- och minimitider.

Detta avslutar granskningen av profileringsmetoder och kommer att fortsätta att lära sig hur man profilerar ansökningar.

Profilering med provtagningsmetoden

Sampling är en profileringsteknik som periodiskt undersöker processen i fråga för att fastställa den aktiva funktionen. Resultatet visar hur många gånger funktionen var i början av samtalsstacken under testning.
Profilering
Öppnar ett testprojekt PeopleTrax. Ställ in konfigurationen till Släpp(Debug-versionen bäddar in ytterligare information för att felsöka programmet, och det kommer att ha en dålig effekt på noggrannheten i profileringsresultaten).

På menyn Analysera Klicka på Starta Performance Wizard.

I det här steget måste du välja en profileringsmetod. Välj CPU Sampling (rekommenderas) och klicka på Nästa.

Vi väljer vilken ansökan vi ska profilera, detta PeopleTrax och knappen Nästa. Klicka sedan på Slutför och profileraren så startar vår applikation automatiskt. På skärmen ser vi programmet PeopleTrax. Vi trycker på knappen få folk, väntar på slutförandet av arbetet och exportera data. Vi stänger anteckningsblocket och programmet och profileraren genererar en rapport.

Profilgenererad rapport (*.vsp)

Analys av provtagningsmetodrapporten
Sammanfattning visar ett diagram över CPU-användning över hela profileringstiden. Lista Heta vägen visar de samtalsgrenar som visade mest aktivitet. Och på listan Funktioner som utför mest individuellt arbete(vars namn talar för sig själv) - funktioner som upptog b handla om Längre processtid i kroppen av dessa funktioner.

Tittar på listan Heta vägen vi ser att metoden PeopleNS.People.GetNames upptar nästan sista platsen i samtalsgrenen. Det kan sedan studeras närmare för prestandaförbättringar. Klicka på PeopleNS.People.GetNames och öppnar sig framför oss Funktionsdetaljer.

Detta fönster innehåller två delar. Utgiftsfönstret ger grafisk representation funktionernas arbete, och funktionens och dess anropares bidrag till antalet instanser som valts ut. Du kan ändra funktionen i fråga genom att klicka på den med musen.

Funktionskodvy visar metodkoden när den är tillgänglig och markerar de dyraste raderna i den valda metoden. När metoden är vald GetNames det kan ses att den läser rader från programmets resurser med hjälp av StringReader, lägga till varje rad till ArrayList. Det finns inga uppenbara sätt att förbättra den här delen.

Därför att PeopleNS.People.GetPeople den enda som ringer GetNames- Tryck GetPeople. Denna metod återkommer ArrayList objekt PersonInformationNS.PersonInformation med namn på personer och företag som returneras av metoden GetNames. Ändå, GetNames anropas två gånger varje gång den skapas Personinformation. (Detta visas med gula och röda markeringar). Uppenbarligen kan man enkelt optimera metoden genom att bara skapa listor en gång i början av metoden.

Alternativ version GetPeople finns också i koden och vi slår på den nu. För att göra detta måste du definiera OPTIMIZED_GETPEOPLE som villkorlig kompileringssymbol i fönstret för projektegenskaper människor och PeopleTrax. Och ja, om du vill upprepa mina experiment, måste du åtgärda felet i projektet. Den optimerade klasskonstruktören stavade namnet på resurserna fel: du behöver PeopleNS.Resources istället för PeopleNS.Resource. Om detta inte ändras, faller allt med fruktansvärda fel.

Den optimerade metoden kommer att ersätta den gamla vid nästa konstruktion.

Starta om profilering i den aktuella sessionen genom att klicka Lansering med profilering i fönstret prestandautforskare. Klicka på få folk och exportera data. Vi stänger anteckningsblocket och programmet och profileraren genererar en ny rapport.

För att jämföra två rapporter, välj båda och RMB Jämför resultatrapporter. Deltakolumnen visar skillnaden i versionsprestanda Baslinje från senare Jämförelse. Välja Inklusive prov % och ansöka.

Som du kan se är prestandavinsten synlig för blotta ögat.

Profilering med instrumentering

Denna metod är användbar vid profilering av I/O-operationer, skrivning till disk och vid kommunikation över ett nätverk. Den här metoden ger mer information än den tidigare, men den kommer med mer omkostnader. Binärfiler mottagna efter insättning ytterligare kodär större än normalt och är inte avsedda att användas.

Den här gången kommer vi att fokusera vår analys på dataexport, där en lista över personer skrivs till en anteckningsblocksfil.

Profilering
prestandautforskare välja Instrumentation och klicka på Starta profilering. Klicka på Skaffa personer. När du har laddat upp personer, vänta 10 sekunder och klicka på Exportera data. Stäng anteckningsblocket och programmet. Profileraren kommer att generera en rapport.
Analys
Profilern kommer att visa denna bild:

Vi fick inte den information vi ville ha. Låt oss filtrera data. Vi väntade medvetet i 10 sekunder bara för att filtrera bort profileringsdata som vi inte behöver just nu. Vi markerar från den 13:e till slutet och trycker på Filtrera efter val. Ett annat resultat:

Heta vägen visar att metoden Concat tar mycket tid (det är också den första på listan Functions With Most Individual Work). Klicka på Concat för att se detaljerad information om metoden.

Det är klart det PeopleTrax.Form1.ExportDataär den enda metoden som anropar Concat. Klick PeopleTrax.Form1.ExportData i anropsmetoder ( Funktion som anropar denna funktion).

Vi analyserar metoden i kodfönstret. Observera att det inte finns något direktanrop till Concat. Istället finns det användningen av operanden += , som kompilatorn ersätter med metoder System.String.Concat. Som nästan alla redan vet leder alla ändringar av strängar i .NET till förstörelse gammal version sträng och skapa en modifierad sträng. Lyckligtvis har .NET en klass StringBuilder som är designad för att göra jobbet.

Projektet har redan en optimerad metod med hjälp av StringBuilder. Lägg till en kompileringsvariabel i PeopleTrax-projektet OPTIMIZED_EXPORTDATA. Vi sparar och kör profileraren igen och jämför rapporterna. Det är direkt klart (och logiskt klart) att vi har optimerat Concat-anrop (från 6000 till 0 gånger).

Efter att ha startat applikationen är en märkbar förbättring av prestanda synlig för ögat. Det är väldigt viktigt att köra profilering igen, det finns till och med synliga förbättringar. Om du visar ny data efter att ha åtgärdat problemet kan andra problem med programmets prestanda avslöjas.

Ett av mina favoritverktyg genom tiderna är SQL Server Profiler, ofta kallad Profiler. Det här verktyget visar data om valfritt antal detaljerade SQL Server-händelser. Dessa serverhändelser kan ses i fönstret Spårningsegenskaper (Figur 49-3) och även loggas till en fil eller tabell för senare analys. Filter kan ställas in för att logga alla händelser eller en vald delmängd av dem.

Bild. 49,2. PÅ detta exempel mätarprotokoll loggar information

om SQL Server-prestanda i katalogen C:\Perf Logs

SQL Server Profiler kan startas från menyn Verktyg i Management Studio eller direkt från mappen SQL Server 2005 på Start-menyn. För att se åtgärderna måste du antingen definiera ett nytt spår eller använda en befintlig fil.

SQL Server Profiler är nu tillgänglig med SP1 spåra stora mängder data på stora datorer.

Dessutom, vid övervakning av analystjänsten, visades tiden tidigare i Universal Time Synchronized Time (UTC). Använder nu lokal system tid. Tidigare har framgångsrikt återgivna händelser räknats felaktigt, som ett resultat av att användaren fick felaktig statistik. Det här problemet har åtgärdats.

Definiera ett nytt spår

När en ny spårning skapas (antingen med menykommandot Arkiv^Nytt spår eller knappen Ny spårning i verktygsfältet), skapas också en ny anslutning till SQL Server och dialogrutan Spårningsegenskaper öppnas (Figur 49-4). På fliken Allmänt i det här fönstret konfigureras spårning (särskilt namn, filplats etc.), och på fliken Val av händelser definieras de händelser, data och filter som ska loggas. Om spårning körs kan dessa alternativ visas men inte ändras. En spårningskonfiguration kan sparas som en mall för att göra det lättare att skapa nya spår i framtiden.

Ris. 49,4. På fliken Val av händelser i fönstret Spårningsegenskaper kan du välja händelser som spåras av verktyget Profiler.

Spåret kan ses i realtid, men data kan skrivas till en SQL Server-fil eller tabell samtidigt. Detta är användbart för senare intellektuell analys, jämförelse med systemövervakarens räknardata, eller för import till Database Engine Tuning Advisor.

När avläsningar skrivs till en fil sammanfogas de i 128 KB-kedjor för att förbättra prestandan; på samma sätt, när du skriver till en tabell, grupperas data i flera rader.

För att spara data som fångats av Profiler för senare analys, använd en högpresterande filmetod, samt serverspårning (vi pratar om det senare). Om du vill analysera data med T-SQL instruktioner, använd exakt samma tillvägagångssätt, men efter att spårningssessionen är klar, öppna den resulterande filen i Profiler-verktyget och välj kommandot Arkiv^Spara som^Tabell från menyn.

Val av evenemang

Fliken Val av händelser definierar de åtgärder som utförs av databasservern och som kommer att loggas av verktyget Profiler. Precis som en prestationsövervakare kan Profiler spåra många viktiga SQL Server-händelser. För att förenkla valinställningarna kan du använda standardmallarna.

I Händelsen SQL Batch Completed är baserad på exekvering av T-SQL-batcher i

SVS som helhet (paket separerade av terminatorer), inte deras individuella instruktioner.

| * Baserat på detta registrerar Profiler data om endast en händelse, oavsett

Simo på paketets längd. För att registrera utförandet av individuella instruktioner

DML, använd händelsen SQL Statement Complete.

Alla händelser kan inte användas för att återskapa spåret. Till exempel kan SQL Batch Start-händelsen spelas upp igen, men SQL Batch Complete-händelsen kan inte.

Beroende på händelserna blir olika data tillgängliga för spårning. Även om SPID-datakolumnen verkar vara valfri är detta intryck missvisande - det är obligatoriskt.

Händelsefiltrering

Profiler-programmet kan samla in så mycket information åt dig att det enkelt kan fylla upp en hårddisk på ett ögonblick. Lyckligtvis hjälper filtret som tillhandahålls av programmet (Fig. 49.5) dig att begränsa denna array till endast de data du är intresserad av.

Ris. 49,6. SQL Server Profiler kan integrera prestandaövervakningsdata och hålla den synkroniserad med spårade händelser

Använder SQL Trace

SQL Profiler används vanligtvis interaktivt och räcker för intermittent datainsamling. Långa spår kan dock lätt samla hundratusentals poster, vilket kan orsaka mycket specifika problem på arbetsstationen som kör spårningen. Lösningen är att skapa en spårningslogg direkt på servern. Sådan spårning kommer att orsaka en liten extra belastning på servern; i detta fall kommer filerna att skrivas i block om 128 KB.

industriella system spårning på serversidan, att skriva data till en fil på servern är det bästa sättet insamling av information

om prestanda samtidigt som ytterligare belastning på servern minimeras.

Spårning som körs på servern kan definieras och implementeras med hjälp av en uppsättning systemlagrade procedurer. Du kan skriva koden själv eller använda programmet SQL Server Profiler.

När spårning har konfigurerats och testats i SQL Server Profiler, välj Arkiv^Exportera^Spårningsdefinition^För SQL Server 2005 från menyn för att generera ett T-SQL-skript som kan utföra spårning på serversidan.

I För att ta reda på vilka spår som körs på servern, fråga efter

SVS till vår ledningssyn på systraces. När du tittar på I *-resultaten för den här frågan kommer du att se ytterligare spår. Det första *-numret har alltid en så kallad standardspårning som samlar in data för SQL Server-loggar – det går inte att stoppa.

För att stoppa en serverspårning, använd sp_trace_setstatus-systemets lagrade procedur. Dess första argument (traceid) är spårningsidentifieraren och det andra anger åtgärdens karaktär. En åtgärdsparameter på noll gör att spåret stannar, en startar den och två stänger och raderar den. Följande kod stoppar spår nummer 2.

SQL Profiler- mjukvaruverktyg Den används för att spåra SQL Server. "Spåra" - en session för att samla in information om driften av SQL Server 2008

Huvudsyfte:

SQL Profiler används av administratörer för att:

analys av applikationen;

bestämma optimaliteten för förfrågningar som skickas till servern;

· identifiera Transact-SQL-kommandon som orsakar ett fel;

samla in information om användaraktivitet under en lång tidsperiod;

övervakning av serverdrift i realtid.

Nya möjligheter:

a. Analystjänster profilering;

b. profilering av evenemang för integrationstjänster;

c. förmågan att registrera räknaravläsningar från Performance Monitor när du spelar in information om kommandoexekvering;

d. Många nya händelser och informationskällor har lagts till i Profiler som kan väljas att skrivas till spårningsfilen.

f. möjligheten att gruppera händelser i profileringsfönstret.

Arbeta med SQL Server Profiler

1. Kör SQL Server Profiler - från menyn Starta Programs SQL Server 2008 Prestandaverktygen SQL Server Profiler.

2. I fönstret som öppnas, i menyn Fil välja Nytt spår och anslut till SQL-server Server 2008, som vi kommer att övervaka.

3. Konfigurera sessionsinställningar i fönstret Spåra egenskaper, som öppnas automatiskt innan en spårningssession startar (se figur 8.1).

Ris. 8.1. Ställa in alternativ för spårningssession

a. På fliken Allmän välj från listan Använd mallen den mest lämpliga mallen. Mallen väljs med hjälp av menyn Fil à Mallar i SQL Server Profiler. Till att börja med har du åtta mallar till ditt förfogande:

1). standard (standard)- en standardmall som låter dig spåra alla lagrade procedurer och Transact-SQL-kommandon som körs för exekvering;

2). SP_Counts- insamling av information om lagrade procedurer och funktioner som startats för exekvering, sorterade efter namn;

3). TSQL- insamling av information om alla Transact-SQL-kommandon som startats för exekvering på servern, med angivande av identifierare för användarprocesser och starttid;

4). TSQL_Duration- liknande den tidigare mallen, men istället för information om starttiden för TSQL-kommandot, registreras tiden som det tog att köra det;

5). TSQL_Grupperad- förutom information om koden för Transact-SQL-kommandot och tiden då det kördes, registreras även information om applikationens namn, konto användaren i operativsystemet och användarkontot som användes för att ansluta;



6). TSQL_Replay- registrera den mest detaljerade informationen om de utförda Transact-SQL-kommandona;

7). TSQL_SPs- förutom att registrera information om början av den lagrade procedurens start (SP:Starting), registreras information om exekveringen av vart och ett av kommandona för den lagrade proceduren (SP:StmtStarting);

8). Inställning- används för att samla in information som krävs av Databas Tuning Advisor.

b. På fliken Allmän om det är nödvändigt att ange platsen där spårningsinformationen sparas:

ett). Spårningsinformationen kan loggas till en fil (5 MB som standard):

· parameter Aktivera filövergång bestämmer om nästa fil automatiskt skapas om du fyller i en fil. Namnet på nästa fil kommer att vara detsamma som namnet på den föregående, men ett nummer kommer att läggas till dess namn (1, 2, 3, etc.)

· parameter Serverns processspårningsdata kan användas för att öka tillförlitligheten för att registrera spårinformation. När den här kryssrutan är markerad kommer servern att bearbeta spårningsinformationen.

2). Spårningsinformationen kan lagras i en SQL Server-tabell. En tabell med önskad uppsättning kolumner skapas automatiskt.

3). Använder parametern Aktivera spårningsstopptid du kan ange när spårning ska stängas av automatiskt.

c. På fliken Händelseval bestämma parametrarna för att samla in information. I tabellen på denna flik måste du välja de nödvändiga händelserna (i rader) och informationen (i kolumner) som kommer att registreras för dem. För att visa alla rader och kolumner måste du markera rutorna Visa alla händelser och Visa alla kolumner.

ett). med en knapp Kolumnfilter(Kolumnfilter) konfigurera filter för att samla in nödvändig information (spåra åtgärder som utförs i en specifik databas, eller av en specifik applikation eller av en specifik användare) - Tycka om eller Inte som;

2). med knappen Organisera kolumner(Ordna kolumner) konfigurera ordningen på kolumner som ska visas eller registreras i profileraren med möjligheten att gruppera data - Gruppsektionen.

4. Efter att ha ställt in alla spårningsparametrar, klicka på knappen Springa(Start) (Se figur 8.2)

Ris. 8.2. Visa information under en spårningssession

Den övre delen av fönstret visar händelser som inträffar på servern, och den nedre delen visar detaljerad information för varje händelse (till exempel SQL-kommandokod).

Funktioner tillgängliga i spårningsfönstret:

1. Om på fliken Organisera kolumner i mallegenskaperna som du har valt kolumner för gruppering kan du gruppera poster efter dessa kolumner i vyfönstret. För detta ändamål, menyn se kommandot tillhandahålls Gruppvy;

2. Om i listan grupp endast en kolumn har placerats, då har du möjlighet att använda visningsläget Aggregerad vy(se figur 8.3). Detta läge aktiveras med kommandot Aggregerad vy från samma meny se.

Ris. 8.3. Visningsläge Aggregerad vy

3. Du kan öppna händelser lagrade i spårningsfiler och tabeller i profileraren. Det är också möjligt att upprepa loggade operationer med hjälp av menyn Repris;

4. Du kan länka spårningsinformation till System Monitors prestandaräknare. För detta:

definiera en spårningssession under vilken information för kolumner måste skrivas Starttid och Sluttid;

· starta en spårningssession med information skriven till en fil eller tabell. Samtidigt med det, samla ett protokoll för mätaravläsningar i en fil prestandaövervakare;

öppna insamlad information från spårningsfilen i profileraren och använd sedan kommandot Importera prestandadata från menyn Fil.