SQL-profiili kasutamine. SQL Profiler lahendab probleemid. SQL Profiler – eesmärk

SQL Server Profiler tarkvaratoode on graafiline kest, mis on loodud jälgede loomiseks ja jälgede tulemuste analüüsimiseks. Sündmused salvestatakse jälgimisfaili, mida saab seejärel analüüsida või kasutada konkreetsete toimingute jadade taasesitamiseks, et tuvastada ilmnenud probleeme.

Praegu tehtavate toimingute jälgimiseks peate käivitama MS SQL Profileri, looma uue jälje ja konfigureerima indikaatorite analüüsi:

Vahekaardil Üldine peate määrama jälje nime. Määrake, kuhu jäädvustatud jäljeandmed salvestatakse – faili ja/või andmebaasi tabelisse.

Suurt huvi pakub vahekaart "Sündmuste valik":

Sellel lehel on täpsustatud sündmused, mida tuleb jälgida. Selles näites näitame päringuplaanide jälgimiseks vajalikke andmeid.

Hankige 267 videotundi 1C-s tasuta:

Vaikimisi jookseb jälgimine kõigis andmebaasides kõigis määratud sündmustes. Vastuvõetud andmetele valikute rakendamiseks peate klõpsama nuppu "Veerufiltrid ...":

Näiteks määrame valiku infobaasi identifikaatori järgi (andmebaasi ID saate teada päringuga SELECT DB_ID(N'BaseName')).

Jälje käivitamine Profileris 1C jaoks

Kui kõik seadistused on tehtud, jääb üle vaid alustada jälgimist, vajutada nuppu "Käivita". Sellest hetkest alates kaasatakse jälgimisse kõik filtris määratud toimingud:

Näiteks juhin jälge dokumendi “Kaubade ja teenuste laekumised” ajaks, et jälgida kõige töömahukamaid toiminguid.

Kui jälg on kätte saadud, tuleb seda analüüsida.

Profileri andmete analüüsimine

Analüüsiks saab saadud jälje salvestada kas faili või tabelisse. Salvestame andmebaasi tabelisse:

16.05.2000 Itzik Ben-Gan

Nii nagu kuriteo taasloomine aitab kurjategijat leida, aitab andmebaasi otsimine tuvastada kitsaskohti ja neid kõrvaldada.

Ajakirja eelmises numbris avaldatud artikkel „Püüdke sündmust” kirjeldas SQL Server 7.0 jälgimissüsteemi arhitektuuri ja näitas, kuidas SQL Profileris jälge graafiliselt määratleda. Seekord räägime sellest, kuidas taasluua jälgi kasutades SQL Profilerit ja kuidas määrata automaatset käivitust laiendatud jälgi salvestatud protseduuride abil. Sellele võimsale alusele toetudes saate asjatundlikult kasutada SQL Profilerit ja salvestatud protseduure, et uurida kõike alates kauakestvatest päringutest kuni keeruliste ummikseisudeni.

Esialgne ettevalmistus marsruudi reprodutseerimiseks

SQL Profileri abil saate korrata salvestatud jälgi, et siluda probleemseid rakendusi, luua teststsenaariume erinevate tegelike olukordadega, konfigureerida andmebaase ja palju muud. Kui teil on vaja marsruuti uuesti jälgida, peate tegema ettevalmistustööd. Esiteks peate määratlema jälje, et jälgida konkreetseid sündmusi ja andmeveerge, mis pole teid huvitavad. Nende lisasündmuste ja veergude jäädvustamine tagab, et kõiki toiminguid korratakse täpselt nii, nagu need juhtusid varem. Teiseks peaksite jäljetulemused salvestama faili, tabelisse või SQL-skripti.

Iga korduskäivitamine nõuab sündmuste Connect, Disconnect, ExistingConnection, aga ka RPC:Starting ja SQL:BatchStarting jäädvustamist. Lisaks peate taustaprogrammi API kursorite (st serveri kursorite, mida juhivad API kursori funktsioonid) esitamisel jäädvustama sündmused CursorExecute, CursorOpen ja CursorPrepare. Ettevalmistatud serveripoolsete SQL-lausete reprodutseerimiseks peate lisama ka sündmused Exec Prepared SQL ja Prepare SQL. Reprodutseerimiseks on vaja veerge, mis sisaldavad järgmisi andmeid: rakenduse nimi, binaarne teave, ühenduse ID või serveri protsessi ID (SPID), andmebaasi ID, sündmuse klass, sündmuse alamklass, hostinimi, digitaalne teave, serveri nimi, kasutajanimi SQL, käivitamine algusaeg ja tekstiteave.

Oluline on tähele panna, et uuesti käivitades ei simuleerita salvestatud sündmusi, need korduvad. Seetõttu pidage meeles, et esialgse jälgimisprotsessi käigus muutsite tõenäoliselt oma andmebaasi. Näiteks INSERT-lauset sisaldava jälje taasesitamisel võib tabelisse ilmuda duplikaatvõti. Selliste probleemide vältimiseks peaksite taastama andmebaasi algsesse olekusse, kui jälge esitatakse uuesti algses serveris (st serveris, kus algne jälg käivitati).

Kui kasutate korduskäitamist mõnes teises serveris, on oluline tagada, et selle serveri andmebaas oleks algserveri andmebaasiga samas olekus. Sel juhul peate kasutama samu kasutajanimesid, nende volitusi ja andmebaasi identifikaatoreid, mida kasutati lähteserveris.

Samade identifikaatorite kasutamine nõuab erilisi oskusi ja kogemusi, eriti kuna Microsoft ei julgusta andmebaasi identifikaatorite muutmiseks otse juurdepääsu süsteemitabelile sysdatabases. Saate andmebaasi ID-sid sobitada muul viisil. Selleks kopeerige kasutajate andmebaasi failid lähteserverist sellesse, kus jälg esitatakse, ja taastage seejärel lähteserverist põhiandmebaasi varukoopia sinna. Alternatiivne meetod on taastada kasutajate andmebaasi varukoopia lähteserverist käitamiseks valitud serverisse ja seejärel taastada seal põhiandmebaasi varukoopia. Mõlemal juhul asuvad serveris, kus jälge taasesitatakse, andmebaasifailid samades kataloogides kui lähteserveris ja põhiandmebaasi süsteemi tabelid sisaldavad algseid andmebaasi ID-sid. Nende probleemide täielikuks kõrvaldamiseks eemaldage lihtsalt jäljest andmebaasi ID veerg ja määrake iga jälgimise käigus jäädvustatud kasutaja jaoks vaikeandmebaas.

Samuti saate juhtida skripti sünkroonimise taset ja taasesituse kiirust. Dialoogiboksi Replay SQL Server sisenemiseks valige taasesituse menüüst Sätted. Sünkroonimistase parameeter, mis juhib ühendusesisest sünkroonimist, võib võtta järgmisi väärtusi.

Täielik sünkroonimine. See on vaikeväärtus. Sel juhul taasesitatakse kõik ühes ühenduses toimunud sündmused nende algses järjekorras. Osaline sünkroonimine. Selle väärtusega saavad sündmused ühes ühenduses alata enne, kui teistes ühendustes juba salvestatud sündmusi. Sünkroonimine puudub. Selle parameetri väärtusega võivad sündmused toimuda kohe pärast eelmise sündmuse lõppu samas ühenduses, st ilma ühendusesisese sünkroonimiseta.

Taasesituse kiiruse parameetriks Replay Rates saab määrata ühe järgmistest väärtustest.

Nii kiiresti kui võimalik. See on vaikeväärtus. Sel juhul algab järgmine sündmus kohe pärast eelmise lõppu. Säilitage sündmuste vaheline intervall. See väärtus säilitab algse ajavahemiku sündmuste esinemise vahel. Säilitage suhe algusajani. Selle väärtuse korral toimuvad sündmused jälje taasesituse alguse suhtes samadel aegadel kui algse jälje puhul.

Marsruudi taasesituse korraldamine

Oletame, et soovite reprodutseerida ettevalmistatud serveripoolsete SQL-lausete täitmisjälgi, mis on Transact-SQL-i (T-SQL) laused, mille kasutaja saadab serverisse ADO, OLE DB või ODBC kaudu. SQL Server 7.0 käivitab serveripoolsed ettevalmistatud SQL-laused, kasutades pseudosalvestatud protseduure sp_prepare ja sp_execute, mida klientrakendus kutsub.

Funktsiooni sp_prepare kutsumine paneb SQL Serveri T_SQL-laused täitmiseks ette valmistama, kompileerides need ja salvestades täitmisplaanid vahemällu. Kui kutsutakse sp_execute, käivitab SQL Server varem vahemällu salvestatud plaanid, tehes seda võib-olla korduvalt. Iga salvestatud protseduurikutse genereerib sündmused RPC:BatchStarting, Prepare SQL ja Exec Prepared SQL. Just sel põhjusel tuleb need sündmused marsruudi määratlusse lisada.

SQL Profiler sisaldab mitmeid jäljemääratluste näiteid, mida saate mallidena kasutada. Sealhulgas näide number 6, "T-SQL taasesitamiseks", mis on seotud jälje uuesti käitamisega. See näide on kasulik taasesituse ajal genereeritud jälje väljundi täpsustamiseks. Salvestatud jälituse väljundi taasesitamiseks avamiseks valige menüüst Fail käsk Ava ja valige fail, tabel või SQL-skript, kuhu jälje ajal kogutud teave salvestada. Saate juhtida taasesitust, kasutades tabelis 1 näidatud valikuid. Neid saab esitada kas kordusmenüü üksuste või tööriistariba nuppudega.

Laiendatud salvestatud protseduuride kasutamine

Mõned SQL Profileri jälgimisfunktsioonid pole saadaval. Nende hulka kuuluvad jälgimise ajakava järgi käitamine, konkreetse sündmuse toimumisel või SQL Serveri käivitamisel käitamine. Lisaks ei saa SQL Profilerit konfigureerida jälitustulemusi saatma Windows NT või Windows 2000 rakenduste logisse. Nende funktsioonide täitmiseks ja jälgede programmilisel manipuleerimisel suurema vabaduse tagamiseks saate kasutada laiendatud salvestatud protseduuride komplekti, mida ühiselt nimetatakse xp_trace*.

Vaatame nende salvestatud protseduuride kasutamise põhimõtteid jälje sp_start_mytrace käivitamise ja jälje sp_stop_mytrace peatamise näite abil. Esimene salvestatud protseduur sp_start_mytrace määratleb jälgimissündmused, andmeveerud, filtrid ja loob jäädvustatud sündmuste salvestamiseks järjekorra. Seejärel otsib see sündmused järjekorrast ja paigutab need süsteemifaili. Protseduur sp_start_mytrace suhtleb sündmuste järjekorraga ja jälgib selle olekut täisarvulise järjekorrakäepideme kaudu, mille protseduur loob järjekorra koostamisel. sp_stop_mytrace kasutab seda käepidet, kui on vaja järjekorda seada.

Järjekorrapideme oleku jälgimine ei ole lihtne ülesanne. Kuigi selle väärtuse saamiseks on palju meetodeid, on kõige lihtsam ja funktsionaalsem viis luua tabel, mis salvestab andmed kõigi jälgede ja nende järjekordade kohta, samuti jälgimise algusaja ja selle kasutaja kasutaja ID, kes lubas jälg ja arvuti nimi, millest see võeti. Loendis 1 on näidatud laused, mis loovad sellise tabeli, mida nimetatakse aktiivseteks jälgedeks. Et näha, milliseid jälgi praegu püütakse, vaadake lihtsalt seda tabelit. Jälgimise peatamiseks küsige tabelist lihtsalt vastavat järjekorra kirjeldust.

Salvestatud protseduur jälje käivitamiseks

Vaatame läbi need kaks salvestatud protseduuri, et näha, kuidas jälgimist alustatakse ja peatatakse. Salvestatud protseduuril, mis alustab jälgimist, on neli valikulist sisendparameetrit. Esimesed kaks, @spid_filter ja @dbid_filter, võimaldavad piirata jälgimise käigus kogutavat teavet ainult selle teabega, mis on seotud konkreetse serveriprotsessiga (mis tuvastab selle SPID) ja määratud andmebaasiga. Kui neid parameetreid ei täpsustata, kogub jälg andmeid kõikidest protsessidest ja andmebaasidest. Parameeter @email_address võimaldab määrata e-posti aadressi, millele saadetakse üksikasjalik teave jälgimise edenemise kohta. Kui seda parameetrit pole määratud, kuvab sp_start_mytrace ekraanil ainult teavet. Kui see on määratud, kuid aadress on määratud valesti, genereerib salvestatud protseduur veateate ja lõpeb. Viimane parameeter @filename on mõeldud selle faili nime määramiseks, kuhu jälitamise käigus kogutud teave saadetakse. Kui see parameeter pole määratletud, paigutatakse vaiketeave faili c:\mytraceN.trc, kus N on järjekorra kirjelduse number. See konventsioon, mis määratleb jälgimisandmete failide nimetamise reegli, võimaldab võtta korraga mitu jälge, ilma et üks neist lukustaks faili enda jaoks tulemuste salvestamiseks.

Päästikutoimingu testimiseks muutke faili atribuute.

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

Saate teate, mis näitab, et faili atribuute on muudetud:

Faili atribuute muudetud:
Väide: ALTER DATABASE testdb MODIFY FILE (NAME = `testdb_dat`,
MAKSIMAALSUS = 30 MB)
NT kasutajanimi: Gandalf
Rakenduse nimi: MS SQL Query Analyzer
SQL-i kasutajanimi: NA
Aeg: 2000-11-22 14:15:28

Alati on väga raske aru saada, millised sündmused viisid ummikseisuni. SQL Profiler pakub aga erisündmusi, mis võivad uurimise palju lihtsamaks muuta. Näiteks saate jälgida sündmuse Lock:Deadlock esinemist. Selle sündmuse toimumine räägib

et tekkis ummikseisu. See annab kasutajale teada serveri protsessi ID (SPID), blokeeritud tehingu ID, blokeerimise aja, rakenduse nime ja kasutaja ID. Sündmus Lock: Deadlock Chain, mis genereeritakse iga kord, kui blokk tekib, on äärmiselt mugav: see võimaldab teil välja selgitada protsesside identifikaatorid (SPID-d) ja tehingud.

Saate salvestada ummikusse sattunud tehingute ID-d, seejärel rühmitada jälgimise tulemused tehingu ID-de järgi ja analüüsida ainult neid tehinguid. Teine lähenemisviis saadab jäljetulemused tabelisse. Seejärel saate päringute abil seda SPID-numbri või tehingu ID järgi filtreerida.

Ummikseisu tekitamiseks looge kaks tabelit, t1 ja t2, millest igaühel peab olema ainult üks täisarvude veerg. Sisestage igasse tabelisse üks rida, mis sisaldab väärtust 1. Määratlege jälg, mis salvestab järgmised sündmuste komplektid: Lukk:Tupik, Lukk: ummikuahel ja vastavad operaatori käivitamise algus- ja lõpusündmused (RPC, SP, SQL). Valik tuleks teha sõltuvalt kavandatavast blokeerimisallikast. Meie näites vajame ainult SQL-i sündmusi: StmtStarting ja SQL:StmtCompleted.

Lisaks vaikeandmete veergudele lisage veerg tehingu ID ja teie valitud veergude jäädvustamiseks. Määrake jälgimisfilter nii, et see vastaks teie töötatava andmebaasi ID-le. Pärast seda avage Query Analyzerist kaks ühendust serveriga. Esimesel ühenduse loomisel tehke järgmist.

ALGA TEHINGU VÄRSKENDAMINE t1 SET col1 = 1

Ühenduse 2 puhul käivitage järgmine tehing:

ALUSTAGE TEHINGU
VÄRSKENDUS t2 SET col1 = 1
VALI * t1
SÖÖDA TEHING

Lõpuks käivitage ühenduses 1 avaldused:

VALI * t2
SÖÖDA TEHING

Peatage jälg ja avage jäljefail. Otsige üles sündmused Lock:Deadlock Chain ja märkige üles seotud tehingute numbrid. Rühmitage väljund tehingu ID-de järgi ja laiendage vastavaid tehinguid. Väljund näeb välja sarnane 1. ekraanil näidatule.

SQL Server Enterprise Manager sisaldab viisardit, mis aitab teil seadistada jälgi, sealhulgas neid, mida saab kasutada ummikseisu põhjuste leidmiseks. Jälje loomise viisardi kasutamiseks jälje määratlemiseks logige sisse Enterprise Manageri, valige menüüst Tööriistad viisardid, seejärel avage kategooria Haldus ja valige Loo jälituse viisard.

Lõplik märkus

SQL Profileri jälje taasesitusvõimalused koos SQL Server 7.0 laiendatud jälgimissalvestusprotseduuridega võimaldavad teil andmebaase siluda. Ükskõik, kas jälgite lihtsalt oma SQL Serveri keskkonna seisundit või lahendate rakenduse jõudlusprobleeme, on aeg oma teadmised praktikas rakendada.

Itzik Ben-Gan [e-postiga kaitstud] omab MCDBA, MCSE+I, MCSD, MCT ja SQL Serveri MVP sertifikaate. Ta on Iisraeli Hi-Tech College'i SQL Serveri kursuste vanemõppejõud ja Iisraeli SQL Serveri kasutajarühma esimees.

Selles loengus jätkame salvestatud protseduuride uurimist, mida alustasime jaotises "Salvestatud protseduuride loomine ja haldamine". Saate teada, kuidas analüüsida salvestatud protseduure ja muid T-SQL-i avaldusi, kasutades Microsoft SQL Server Query Analyzerit ja SQL Server Profilerit. Selle analüüsi põhjal saate määrata, kui tõhusad on T-SQL-laused. Tõhus SQL Serveri päring kasutab sobivat toimingute jada ja sobivaid indekseid, et vähendada töödeldavate ridade arvu ja minimeerida I/O operatsioonide arvu.

Päringuanalüsaatorit kasutades näete T-SQL-lause jaoks valitud täitmisplaani päringu optimeerija SQL Server Päringu optimeerija on sisemine moodul, mis otsib iga T-SQL-lause jaoks parimat täitmisplaani. Päringu optimeerija analüüsib iga T-SQL-lauset, vaatab läbi mitmeid võimalikke täitmisplaane ja hindab iga plaani "maksumust" vajalike ressursside ja töötlemisaja osas. Valitakse madalaima maksumusega plaan. Iga plaani maksumus määratakse olemasoleva statistika põhjal, mille süsteem kogub ja mis võib olla aegunud. Sest te võite oma andmebaasist ja andmetest rohkem teada kui päringu optimeerija, siis võib-olla saate luua plaani, mis on parem kui päringu optimeerija. Päringuanalüsaatori toodetud teabe abil saate kindlaks teha, kas päringu optimeerija plaan konkreetse avalduse jaoks on tõhus, ja kui mitte, võite proovida seda lauset optimeerida, muutes seda või kasutades SQL-i vihjeid. Selles loengus õpid lisaks päringuanalüsaatori kasutamise õppimisele ka T-SQL lausete optimeerimist.

Profileri abil saate analüüsida oma SQL Serveri süsteemi toiminguid, et teha kindlaks, millised SQL-laused ja salvestatud protseduurid kasutavad mittevajalikke süsteemiressursse. Selle teabe abil saate keskenduda oma häälestamisel peamiselt nendele väidetele ja salvestatud protseduuridele. Lisaks Profileri kasutamise kirjeldamisele näitab see loeng ka seda, kuidas Profileri abil saadud teavet kõige tõhusamalt kasutada.

SQL Query Analyzeri kasutamine

Utiliit Query Analyzer tarnitakse koos Microsoft SQL Server 2000 asendamisega

Eelmistes numbrites (vt ComputerPress nr 1, 3-5, 7, 9'2006) arutasime probleeme, mis on seotud üleminekuga SQL Server 2005-le migratsiooni või versiooniuuenduse teel, samuti SQL Server 2005 kasutamise peamisi stsenaariume. käsitletakse erinevaid päringu optimeerimise meetodeid ja võimalikke lähenemisi jõudlusprobleemide leidmisega seotud probleemide lahendamiseks.

SQL Server pakub teenuseid, mis töötavad dünaamilises ja pidevalt muutuvas keskkonnas. Seetõttu võimaldab serveri töö regulaarne jälgimine tuvastada probleemid nende ilmnemise etapis ja võtta kiiresti meetmeid nende kõrvaldamiseks. Statistika kogunemisel ilmneb arusaam serveri töö peamistest suundumustest. Regulaarne andmete kogumine – isegi juhtudel, kui server töötab probleemideta – loob nn serveri jõudluse baastaseme, mis võib olla võrdlusaluseks serveri jõudluse edasisel mõõtmisel.

Kui teil on algtaseme toimivuse võrdlusalus, saate analüüsida päringu toimivust erinevate stsenaariumide korral. Mõõtmisi on soovitatav teha minimaalselt enne erinevate optimeerimisprotseduuride läbiviimist, selle ajal ja pärast seda, mis tagab tehtud toimingute edu. Lisaks annavad regulaarsed standardsed jõudluse mõõtmised (iganädalane, kuu, kord kvartalis jne) serveri jõudlusest selgema pildi.

Põhistandardiga saab määrata serveri tippkoormuse ja jõudeaega (tipp- ja off-peak time), päringute ja käsupakettide reageerimisaega, varukoopiate loomise ja andmete taastamise protseduuride täitmisaega jne.

Päringu jõudlus

Päringu toimivust tuleks vaadelda kahest vaatenurgast – konkreetse päringu täitmiseks kasutatavad ressursid (ressursside hulka kuuluvad objektid, millele päringuprotsessi ajal ligi pääseme, blokeeritud objektid jne) ja päringu täitmisele kuluv aeg – seda vähem aega päringu täitmiseks kulub, seda väiksem on tõenäosus, et blokeerime päringuprotsessi ajal muud päringud ja tehingud.

SQL Server 2005 sisaldab kahte peamist tööriista päringu jõudluse mõõtmiseks – Performance Monitor ja SQL Server Profiler. Lisaks saate päringute täitmise kohta teabe hankimiseks kasutada T-SQL keele konstruktsioone rühmast SET STATISTICS - SET STATISTICS IO, SET STATISTICS PROFILE ja SET STATISTICS TIME - ning dünaamilisi vaateid (Dynamic Management Views). Järgmisena vaatame üksikasjalikumalt Performance Monitori ja SQL Server Profileri kasutamist.

Performance Monitori kasutamine

Performance Monitori utiliiti kasutatakse riist- ja tarkvararessursside, sh mälu, võrgukasutust, protsessori aega ning SQL Serveri ja muude tarkvaratoodete – Microsoft Message Queuing (MSMQ), Microsoft .NET Frameworki – tööga seotud teabe analüüsimiseks. ja Microsoft Exchange Server. Eelkõige saate Performance Monitori kasutada SQL Serveri ressursside (nt lukud ja tehingud) jälgimiseks.

Meid huvitavate loendurite lisamiseks peate tegema järgmised toimingud:

  1. Menüüs Alusta vali meeskond Jookse ja dialoogipaneelil Jookse sisestage perfmon. See käivitab Performance Microsoft Management Console'i ​​(MMC), mis kuvab mitmete jõudlusloendurite graafilise esituse.
  2. Aknas Süsteemi monitor vajutage diagrammil parempoolset nuppu ja valige käsk Lisa loendurid.
  3. Dialoogipaneelil Lisa loendurid valige meid huvitav arvuti ja jälgitav objekt. SQL Serveriga seotud objektidele lisatakse vastavalt eesliide.
  4. Loendurite valimiseks peate valima ühe suvandi Kõik loendurid või üks või mitu loendurit ripploendist (joonis 1).
  1. Pärast seda peaksite valima andmebaasi eksemplarid või lubama selle valiku Kõik juhtumid.
  2. Nuppudel Lisa ja Sule klõpsamine lõpetab loendurite lisamise.

Pärast meid huvitavate loendurite lisamist saame nende väärtusi vaadata graafiku kujul või salvestada jälgimisfaili (joonis 2).

Viimasel juhul peate elementi laiendama Jõudluslogid ja hoiatused ja klõpsake käsul Uued logi seaded. Dialoogipaneelil Uued logi seaded Peate määrama protokolli nime ja klõpsama nuppu OK. Järgmine dialoogipaneelil CounterLogName valime meeskonna Lisa loendurid. Meid huvitavate loendurite lisamine toimub samamoodi nagu eespool kirjeldatud. Pange tähele, et suur arv loendureid võib süsteemi jõudlust mõjutada. Kui loendurite lisamine on lõpetatud, klõpsake nuppu Sule.

Vahekaardil Kindral jaotises Näidisandmed iga Saate määrata diskreetimissageduse (andmehõive). Soovitatav on alustada keskmise sagedusega, näiteks iga 5 minuti järel ja seejärel vajadusel seda vähendada või suurendada. Pange tähele, et mida lühem on diskreetimisintervall, seda rohkem on vaja süsteemi- ja kettaressursse. Tuleb meeles pidada, et loenduri kvantimisperioodist lühemad intervallid võivad põhjustada ka vale andmete kuvamist. Vahekaardil Logifailid saate konfigureerida protokollifaili atribuute ja Ajakava määratakse seiregraafik. Klõpsates nuppu OK, luuakse andmete kogumise alustamise protokoll (joonis 3).

Logimise käsitsi lõpetamiseks peate vajutama elemendi parempoolset nuppu Loenduri logid ja valige meeskond Peatus.

Logifaili kogutud andmete vaatamiseks Performance Monitoris peate valima elemendi Süsteemi monitor, tegumiribal - käsk Kuva logiandmed ja dialoogipaneelil Süsteemi monitori omadused vahekaardil Allikas määrake logifaili nimi.

Kõige sagedamini kasutatavad jõudlusmonitori loendurid, mida saab kasutada jõudlusprobleemide tuvastamiseks, on jagatud järgmistesse kategooriatesse.

  • juurdepääs andmetele – SQL Serveri enda poolt kasutatavate andmetele juurdepääsu meetodite auditeerimiseks kasutatakse objekti SQLServer: juurdepääsumeetodid;
  • statistika - objekti kasutatakse päringute koostamise ja uuesti kompileerimise jälgimiseks SQLServer: SQL-i statistika. See annab teavet selle kohta, kui kiiresti ja tõhusalt SQL Server päringuid töötleb;
  • tehingud – tehingute arvu määramiseks sekundis kasutatakse objektipõhiseid loendureid SQLServer: Andmebaasid Ja SQLServer: Tehingud;
  • lukud – objekti kasutatakse teatud tüüpi ressurssidele paigutatud SQL Serveri lukkude auditeerimiseks SQLServer: lukud(Tabel 1).

Tabel 1. SQL Server Profileri loendurid

Loenduri nimi

Kirjeldus

Loendab indeksite vahemiku skannimiste arvu sekundis

Loendab viimase sekundi jooksul lõpetatud täielike skannimiste arvu

Otsingud/sek

Loendab viimase sekundi jooksul tehtud otsingute arvu

Tabeliluku eskalatsioonid/sek

Loendab laual olevate lukkude arvu

Töölauad Loodud/sek

Loendab viimase sekundi jooksul loodud töölehtede arvu

Partiitaotlused/sek

Loendab Transact-SQL-i käsupartiide arvu sekundis. Suur pakettide arv tähendab head läbilaskevõimet

SQL-i kompilatsioonid/sek

Loendab päringu koostamise arvu sekundis. Selle loenduri väärtus peaks muutuma peaaegu muutumatuks pärast seda, kui kasutaja on teinud põhitoiminguid

SQL-i ümberkompilatsioonid/sek

Loendab päringu uuesti kompileerimiste arvu sekundis

SQLServer: Andmebaaside objekt. Tehingute/sek loendur

Loendab viimasel sekundil andmebaasis alustatud tehingute arvu

SQLServer: Tehingute objekt. Pikima tehingu kestusaja loendur

Arvutab sekundite arvu tehingu algusest, mis on olnud aktiivne kauem kui ükski teine ​​praegune tehing. Kui see loendur näitab väga pikka tehingut, kasutage selle tehingu kohta teabe hankimiseks süsteemi salvestatud protseduuri sys.dm_tran_active_transactions()

SQLServer: Tehingute objekt. Värskendage konfliktisuhte loendurit

Loendab nende tehingute protsendi, mis kasutavad viimase sekundi andmete värskendamise konfliktide lahendamiseks hetktõmmise eraldamist

Keskmine ooteaeg (ms)

Arvutab keskmise ooteaja iga ootamist põhjustava lukupäringu jaoks

Lukustustaotlused/sek

Loendab lukkude ja lukukonversioonide arvu sekundis

Lukusta ooteaeg (ms)

Arvutab lukustuste kogu ootamise viimase sekundi jooksul

Loendab lukustustaotluste arvu sekundis, mis põhjustasid ootamise

Teine utiliit, mida saate päringu jõudluse mõõtmiseks kasutada, on SQL Server Profiler. Järgmisena vaatleme selle peamisi kasutusviise.

SQL Server Profileri kasutamine

Utiliiti SQL Server Profiler kasutatakse üksikute päringute ja päringute toimivuse mõõtmiseks, mis on osa salvestatud protseduuridest ja Transact-SQL käsupakettidest. Seda saab kasutada jõudlusteabe kogumiseks, sealhulgas üksiku käsu täitmiseks kulunud aja, käsu täitmise blokeerimisaja ja täitmisplaani kogumiseks.

Uue profiili loomiseks peate tegema järgmised toimingud.

  1. Käivitage SQL Server Profiler ( Microsoft SQL Server 2005 => Performance Tools => SQL Server Profiler).
  2. Menüüs Fail vali meeskond Uus jälg.
  3. Dialoogipaneelil Ühendage serveriga valige vajalik server ja klõpsake nuppu Ühendage.
  4. Dialoogipaneelil Jälgi omadused peate määrama profiilinime (Jälje nimi), ja loendis Kasutage malli valige üks saadaolevatest mallidest või Tühi, kui malli ei kasutata.
  5. Profiilide koostamise tulemuste salvestamiseks peate tegema valiku Salvesta faili andmete faili kirjutamiseks ja faili maksimaalse suuruse määramiseks (vaikimisi väärtus on 5 MB), saate valikuliselt lubada Luba faili üleminek et automaatselt luua uus fail, kui määratud profiili suurus on saavutatud. Teine võimalus on salvestada andmed andmebaasi tabelisse (Salvesta tabelisse)- valik Määrake maksimaalsed read võimaldab määrata maksimaalse kirjete arvu.
  6. Jälgimise lõpuaja määramiseks saate kasutada valikut Luba jälgimise peatamise aeg(joonis 4).

Profiili sündmuste ja andmeveergude määramiseks peate tegema järgmised toimingud.

  1. Dialoogipaneelil Jälgi omadused minge vahekaardile Sündmuste valik.
  2. Lisage või eemaldage sündmusi profiilist sündmuste klassitabeli abil.
  3. Kõigi saadaolevate sündmuste loendi vaatamiseks lubage see valik Kuva kõik sündmused(joonis 5).

Tabelis Tabelis 2 on loetletud kõige sagedamini kasutatavad SQL Server Profileri sündmused. Nagu jõudlusloendurid, jagunevad SQL Server Profileri sündmused mitmesse kategooriasse, millest mõned pakuvad meie eesmärkidele huvi.

Tabel 2. SQL Server Profiler Events

Sündmuse nimi

Kirjeldus

See sündmus toimub siis, kui kaugprotseduuri kutse lõpetab täitmise.

See sündmus käivitatakse, kui salvestatud protseduur on täitmise lõpetanud.

SP:StmtCompleted

See sündmus leiab aset pärast ühe Transact-SQL-i käsu täitmise lõpetamist salvestatud protseduuris

SQL:StmtCompleted

See sündmus toimub Transact-SQL-i käsu täitmisel.

SQL:BatchCompleted

See sündmus toimub Transact-SQL-i käskude partii täitmisel.

See sündmus käivitatakse, kui tehing saab ressursi lukustuse.

See sündmus toimub siis, kui tehing vabastab varem lukustatud ressursi.

See sündmus toimub siis, kui luku saamise aeg on ületatud, kuna vajalik ressurss on juba mõne teise tehinguga lukustatud

Kuidas teha kindlaks ummistuste olemasolu

Iga kord, kui tehing kasutab ressurssi (tabel, leht, register jne), määratakse sellele lukk. Kui mõni muu tehing üritab sellele ressursile juurde pääseda ja luku tüüp ei ühildu juba olemasoleva lukuga, hangitakse uus lukk.

Blokeeringu olemasolu kindlakstegemiseks võite kasutada järgmisi meetodeid:

  • kasutage utiliiti SQL Server Management Studio Activity Monitor, mis näitab teavet protsesside, protsessi- ja objektitaseme lukkude kohta. SQL Server Management Studios Activity Monitorile juurdepääsuks peate valima üksuse Juhtimine, ja selles - Aktiivsusmonitor ja topeltklõpsake sellel elemendil. Aktiivsusmonitor võimaldab teil vaadata:

Lukustatud objektid protsessi kohta – kasutage protsessi ID-d lukustamise põhjustanud päringu määramiseks Serveri protsessi ID (SPID) lehel Töötlemisteave,

Protsessid, mis panevad teisi protsesse ootama – kasutage selliste protsesside tuvastamiseks veergu Blokeerinud lehel Töötlemisteave(joonis 6);

  • kasutage blokeeritud protsesside aruande saamiseks SQL Server Profilerit - see loend kuvab teavet protsesside kohta, mis on olnud blokeeritud kauem kui määratud aja O

Oma töös puutume üsna sageli kokku olukorraga, kus teatud päring on aeglane ja päringu tekstist ei paista ilmseid probleeme. Tavaliselt on sel juhul vaja probleemi sügavamal tasandil uurida. Reeglina on vaja vaadata SQL päringu teksti ja selle plaani ning siin aitab meid SQLProfiler.

Mis on SQL Profiler ja miks seda vaja on?

SQLProfiler on MS SQL Serveriga kaasas olev programm, mis on loodud kõigi SQL-serveris toimuvate sündmuste vaatamiseks või teisisõnu jälje salvestamiseks. Miks võib 1C programmeerija vajada SQLProfilerit? Vähemalt selleks, et saada päringu tekst SQL-is ja näha selle plaani. Muidugi saab seda teha ka tehnikaajakirja abil, aga see nõuab teatud oskusi ja tehnikaajakirjas olev plaan ei ole nii ilus ja loetav. Profileerijas saate vaadata mitte ainult tekstilist, vaid ka graafilist päringu täitmisplaani, mis on minu arvates palju mugavam. Profileerija abil saate määrata ka: teatud ajast pikemad päringud, kindlale tabelile suunatud päringud, mis ootavad lukku, ummikseisu ajalõpud ja palju muud...

Päringute analüüsimine SQL Profileriga

Profileerijat kasutatakse kõige sagedamini päringute analüüsimiseks. Reeglina ei pea me kõiki päringuid jälgima, sageli peame nägema, kuidas teatud päring 1C keeles tõlgitakse SQL-i, ja nägema selle täitmisplaani. Näiteks võib meil seda vaja minna, et teha kindlaks, miks päring töötab aeglaselt, või oleme kirjutanud suure päringu ja tahame veenduda, et SQL-päringu keha ei sisalda alampäringu liitumisi. Taotluse jälgimiseks tehke järgmist.

1. Käivitage SQL Profiler Start – Kõik programmid – Microsoft SQL Server 2008 R2 – Tootlikkuse tööriistad – SQLProfiler
2. Looge uus jälitusfail – loo jälg (Ctrl+N)
3. Määrake DBMS-i server, millel meie andmebaas asub, ja klõpsake nuppu "Ühenda".

Loomulikult ei takista miski teid teises arvutis asuva DBMS-i serveri jälgimisest. 4. Ilmuvas aknas „Jälgimise atribuudid” minge teisele vahekaardile „Select Events”.

5. Nüüd peame täpsustama nende sündmuste sündmused ja omadused, mida tahame jäljes näha. Vajame päringuid ja päringuplaane, seega peame lubama sobivad sündmused. Atribuutide ja sündmuste täieliku loendi kuvamiseks lubage lipud "Kuva kõik veerud" ja "Kuva kõik sündmused". Järgmiseks peate valima ainult alloleval joonisel näidatud sündmused, kõik muud sündmused tuleb keelata.


Sündmuste kirjeldus: ShowplanStatisticsProfile – tekstipäringu täitmisplaan.
ShowplanXMLStatisticsProfile – graafiline päringu täitmisplaan.
RPC:Completed - päringu tekst, kui see täidetakse protseduurina (kui täidetakse parameetritega 1C päring).
SQL:BatchCompleted – päringu tekst, kui see täidetakse tavalise päringuna (kui 1C-päring täideti ilma parameetriteta).

6. Nüüd peate sündmuste jaoks seadistama filtri. Kui seda ei tehta, näeme päringuid kõigi selles DBMS-serveris asuvate andmebaaside kohta. Klõpsake nuppu "Veerufiltrid" ja määrake filter andmebaasi nime järgi

Nüüd näeme jäljes ainult päringuid andmebaasi “TestBase_8_2” Soovi korral saate määrata filtri teistele väljadele, millest huvitavamad on: Kestus (Kestus), TextData (tavaliselt päringu tekst) ja. Ridade arv (päringu poolt tagastatud ridade arv).

Näiteks kui mul on vaja püüda kõik päringud tabelisse "_InfoRg4312", mis kestavad rohkem kui 3 sekundit andmebaasis "TestBase_8_2", siis teen:
a) Filtreerige andmebaasi järgi, näidis ülal
b) Filtreerige kestuse järgi millisekundites.

C) Filtreeri päringu teksti järgi


Siin täpsustame maski. Kui teil on vaja jälgida päringuid, mis pääsevad juurde mitmele tabelile, looge jaotises „Sarnane” mitu elementi. Kõik filtritingimused töötavad koos.

7. Nüüd saate jälje käivitada. Klõpsake nuppu "Käivita", mille järel jälgimine hakkab tööle ja näete sündmusi, mille olete seadistanud kuvama ja mis kuuluvad teie filtrite alla. Jälje juhtimiseks saate kasutada käsuribal olevaid nuppe.


Vasakult paremale: Kustutuskumm – tühjendab jälitusakna, Start – alustab jälgimist, Pause – peatab jälgimise, klõpsates nupul Start jätkab jälgimist, Stop – peatab jälgimise

8. Jälgimisaken ise koosneb kahest osast. Ülaosas on sündmused ja sündmuste omadused. Alumine jaotis kuvab olenevalt sündmuste tüübist erinevat teavet. Meie puhul kuvatakse siin kas päringu tekst või selle plaan.

9. Täitkem päringu 1C päringukonsoolis ja vaatame, kuidas see profileerijas kajastub.


Jälg näitab, et taotlusi oli mitu ja ainult üks neist oli meie. Muud päringud on teenusetaotlused.

10. Sündmuste omadustest saab aru: mitu sekundit päringut täideti (Duration), mitu loogilist lugemist oli (Reads), mitu rida päring selle tulemusena tagastas (RowCounts) jne. Minu puhul kestis päring 2 millisekundit, tegi 4 loogilist lugemist ja tagastas 1 rea.

11. Kui liigume ühe sündmuse võrra ülespoole, näeme päringuplaani graafilisel kujul.
Nagu plaanist näha, toimub otsing hinnaindeksi järgi, kuigi seda plaani ei saa nimetada ideaalseks, sest indeks ei kata, koodi- ja nimeväljad saadakse KeyLookupi abil, mis võtab 50% ajast.


Kontekstimenüüd kasutades saab graafilise plaani salvestada eraldi failina *.SQLPlan laiendiga ja avada teise arvuti profileerijas või kasutades täiustatud SQL Sentry Plan Explorer programmi.

12. Kui läheme veelgi kõrgemale, näeme sama päringuplaani, kuid teksti kujul. Just seda plaani kuvatakse TZ, TsUP ja muudes 1C jõudluse jälgimise tööriistades. Selle analüüsimiseks soovitan kasutada täiustatud taustavalgustusega tekstiredaktorit, näiteks Notepad++.

13. Kasutan menüüd “Fail-Salvesta kui” kogu jälge saab salvestada erinevates vormingutes:
a) Profileerija enda formaadis, s.o. laiendiga *.trc
b) Xml-vormingus
c) Jäljest saab teha malli. Vaata järgmist punkti.
d) Jälje saab salvestada andmebaasitabelina. Mugav viis, kui peame leidma näiteks kogu jälje kõige aeglasema päringu või valima päringuid mõne parameetri järgi. Fail - Salvesta kui - Jälgitabel - Valige DBMS-i server ja looge sellega ühenduse loomine Järgmiseks peate valima määratud serveris andmebaasi ja määrama tabeli nime, kuhu jälg salvestatakse. Saate valida olemasoleva tabeli või kirjutada uue nime ja seejärel luuakse tabel valitud andmebaasis automaatselt.

Arvestada tuleb sellega, et Duration salvestatakse tabelisse miljondiksekundites ning tulemuse kuvamisel on soovitav väärtus teisendada millisekunditesse. Tabelisse lisatakse ka veerg RowNumber, mis näitab selle rea numbrit jäljes.

14. Kui päringute analüüsimiseks on sageli vaja profiilitegijat kasutada, siis vajalike filtrite ja sündmuste seadistamine muutub kiiresti igavaks ning võtab ka palju aega. Appi tulevad jäljemallid, kus määrame endale vajalikud filtrid ja veergude järjekorra ning seejärel valime uue jälje loomisel lihtsalt selle malli. Malli loomiseks kasutage menüüd Fail - Mallid - Uus mall

Esimesel vahekaardil on kõik lihtne. Märgime serveri tüübi, malli nime ja vajadusel määrame lipu, et seda malli vaikimisi kasutada. Teisel vahekaardil valime sündmused ja konfigureerime filtrid, nagu juba eespool näidatud. Samuti soovitan kohandada veergude järjekorda, mis säästab päringute analüüsimisel aega. Minu arvates on näiteks mugavam kasutada järgmist järjestust.

Nüüd saate uut jälge luues lihtsalt määrata vajaliku malli, misjärel täidetakse kõik filtrid ja sündmused teisel vahekaardil automaatselt.

Muidugi pole siin näidatud kõiki võimalusi selle imelise tööriista kasutamiseks, kui publikul on huvi, siis on tulevikus võimalik selleteemalist artiklite kogumikku laiendada.