1. Sissejuhatus
1.1 Mis on SQL Server Tegevusmonitor?
SQL Server Aktiivsusmonitor on sisseehitatud diagnostikatööriist SQL Server Management Studio, mis kuvab teavet SQL Server protsesse ja nende mõju serveri jõudlusele. See võimaldab teil jälgida SQL Server protsesse, jälgida ressursi ooteaegu, analüüsida kalleid päringuid ja jälgida sisend-/väljundmustreid – kõik ühest liidesest.
1.2 Miks kasutada SQL Server Tegevusmonitor?
Aktiivsusmonitor on teie esimene kaitseliin jõudlusprobleemide tõrkeotsingul. See annab kohese ülevaate teie arvutis toimuvast. SQL Server näiteks ilma keerukate T-SQL päringute või kolmandate osapoolte tööriistadeta.
Tööriist on suurepärane abiline levinud probleemide, näiteks seansside blokeerimise, protsessorimahukate päringute, päringute liigse täitmise ja sisend-/väljundprobleemide kiirel tuvastamisel. Kui kasutajad teatavad, et rakendus on aeglane või ei reageeri, aitab Activity Monitor teil kindlaks teha, kas süüdlane on andmebaasiserver.
Andmebaaside administraatoritele, kes ei tööta SQL Server Iga päev pakub Activity Monitor ligipääsetavat sisenemispunkti serveri aktiivsuse mõistmiseks. Isegi kogenud andmebaasiadministraatorid kasutavad seda jõudlusuuringute lähtepunktina.
1.3 Aktiivsusmonitor vs muud jälgimisvahendid
Kuigi aktiivsuse jälgimine on väärtuslik, on oluline mõista, kuidas see teiste jälgimisvõimalustega võrreldes on:
Aktiivsusmonitor vs sp_WhoIsActive: Aktiivsusmonitor pakub mitme paaniga graafilist liidest, samas kui sp_WhoIsActive on terviklik salvestatud protseduur, mis pakub üksikasjalikumat teavet ühes tulemuste komplektis. sp_WhoIsActive kuvab konkreetseid ootetüüpe, mida Aktiivsusmonitor rühmitab, ja pakub detailsemat blokeerimisteavet.
Aktiivsusmonitor vs sp_who2: Traditsiooniline käsk sp_who2 kuvab seansi põhiteavet, kuid Activity Monitor läheb kaugemale, kuvades ooteaja statistikat, kulukaid päringuid ja sisend-/väljundmõõdikuid organiseeritud visuaalsel kujul.
Aktiivsusmonitor vs kolmandate osapoolte tööriistad: Kommertskasutuses olevad jälgimislahendused, näiteks SolarWindsi andmebaasi jõudluse analüsaator, pakuvad ajaloolist jälgimist, märguandeid ja täiustatud analüütikat, mis Activity Monitoril puuduvad. Activity Monitor ei nõua aga lisakulusid ega installimist.
1.4 Andmebaaside administraatorite peamised eelised
Aktiivsusmonitoril on mitmeid eeliseid, mis teevad sellest olulise andmebaasi haldamise tööriista:
- Nullkulu: Sisseehitatud SQL Server Management Studio funktsiooniga ei ole litsentsitasu ega juurutamispingutusi vaja.
- Reaalajas jälgimine: Näe serveri praegust tegevust reaalajas, seadistatavate värskendusintervallidega 1 sekundist 1 tunnini.
- Integreeritud tegevused: Paremklõpsake protsessidel seansside peatamiseks, päringu üksikasjade vaatamiseks või käivitamiseks SQL Server Profileeri jäljed – kõik tööriista seest.
- Mitu perspektiivi: Vaadake serveri tervist erinevate nurkade alt viie spetsiaalse paani kaudu, millest igaüks keskendub jõudluse konkreetsetele aspektidele.
- Kiire tõrkeotsing: Tuvastage kõige levinumad jõudlusprobleemid minutitega, kiirendades seega lahenduse leidmise keskmist aega.
- Madal sisenemisbarjäär: Tööriista tõhusa kasutamise alustamiseks pole vaja põhjalikke teadmisi, kuigi need on sügavamad. SQL Server Ekspertiis aitab tõlgendamisel.
2. Aktiivsusmonitori kasutamise alustamine
Enne kui saate Activity Monitori tõhusalt kasutada, peate mõistma tööriista käivitamise eeltingimusi, vajalikke õigusi ja erinevaid meetodeid.
2.1 Eeltingimused ja süsteeminõuded
Kasutada SQL Server Aktiivsusmonitor, mida vajate SQL Server Management Studio (SSMS), mis on installitud teie kohalikku arvutisse või hüpikserverisse. Tegevuste jälgimise tööriista on 2016. aastal oluliselt ümber kujundatud. SQL Server 2008, seega kehtib käesolevas juhendis esitatud teave SQL Server 2008 ja hilisemad versioonid.
Teil peab olema võrguühendus SQL Server eksemplar, mida soovite jälgida. Pilvedes hostitud andmebaaside puhul vajate eksemplarile juurdepääsuks tavaliselt VPN-ühendust või õigesti konfigureeritud tulemüürireegleid.
Aktiivsusmonitor töötab kõigi versioonidega SQL Server, sealhulgas Express, Standard ja Enterprise. Tööriist ise töötab teie kliendiarvutis SSMS-i sees, seega mõjutavad serveri ressursse ainult selle käivitatavad jälgimispäringud.
2.2 Nõutavad load
Aktiivsusmonitori korrektseks toimimiseks on vajalikud õiged õigused. Ilma vastavate õigusteta võite näha tühja ekraani või saada juurdepääsu keelamise tõrketeateid.
2.2.1 Serveri oleku vaatamise luba
. VAATA SERVERI OLEKUT Aktiivsusmonitori kasutamise peamine nõue on luba. See serveri tasemel luba võimaldab teil näha kõiki aktiivseid protsesse ja nendega seotud mõõdikuid.
Selle loa andmiseks saab serveri administraator käivitada järgmise käsu:
GRANT VIEW SERVER STATE TO [YourLoginName];
Ilma VIEW SERVER STATE'ita võib Activity Monitor küll avaneda, kuid ühelgi paanil andmeid ei kuvata.
2.2.2 Andmebaasi tasemel õigused
Andmefaili sisend-/väljundpaanil teabe vaatamiseks vajate täiendavaid õigusi. Täpsemalt peab teil olema üks järgmistest kombinatsioonidest:
- LOO ANDMEBAAS luba või
- MUUDA MISTAHES ANDMEBAASI luba või
- VAATA MISTAHES MÄÄRATLUST luba
Need õigused tuleb kombineerida VAATA SERVERI OLEKUT täieliku aktiivsuse monitori funktsionaalsuse jaoks.
2.2.3 Lubade tõrkeotsing
Kui tegevuste monitor avaneb, aga andmeid ei kuvata, on kõige levinum põhjus load. Kontrollige, kas teie sisselogimisel on serveri tasandil antud õigus VIEW SERVER STATE. Saate oma õigusi kontrollida järgmiselt:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
Otsige veerust permission_name valikut „VIEW SERVER STATE”. Kui see puudub, võtke selle saamiseks ühendust oma andmebaasi administraatoriga.
2.3 Kuidas avada aktiivsuse monitori SSMS-is
SQL Server Management Studio pakub nelja erinevat meetodit Activity Monitori käivitamiseks, andes teile paindlikkuse vastavalt teie töövoo eelistustele.
2.3.1 1. meetod: tööriistaribalt
Kiireim viis Aktiivsusmonitori avamiseks on tööriistariba ikooni kasutamine:
- Ühenda oma SQL Server näiteks SQL Server Juhtimisstuudio.
- Leidke tavalisel tööriistaribal aktiivsuse monitori ikoon (see meenutab tulpdiagrammi rohelise esitusnupuga).
- Klõpsake ikooni, et käivitada Aktiivsusmonitor.
See meetod on kiireim, kui töötate juba SSMS-is ja peate serveri tegevust kiiresti kontrollima.
2.3.2 2. meetod: Objektihaldurist
Samuti saate Tegevusmonitori käivitada otse Objektihaldurist:
- Leidke Objektihalduris SQL Server eksemplar, mida soovite jälgida.
- Paremklõpsake eksemplari nimel.
- valima Activity Monitor kontekstimenüüst.
See meetod on kasulik mitme serveriga ühenduse loomisel, kuna see tagab õige eksemplari jälgimise.
2.3.3 3. meetod: kiirklahvide kasutamine
Klaviatuurile keskendunud kasutajatele SQL Server Management Studio pakub spetsiaalset otseteed:
- Veenduge, et SSMS on aktiivne aken ja olete eksemplariga ühendatud.
- press Ctrl + muu + A.
- Aktiivsusmonitor avaneb objektide uurijas hetkel valitud eksemplari jaoks.
Pane tähele, et Activity Monitor loob ühenduse Object Exploreris valitud serveri eksemplariga, seega veendu enne selle otsetee kasutamist, et oled valinud õige eksemplari.
2.3.4 4. meetod: valikute menüüst (käivituskonfiguratsioon)
Kui kasutate Activity Monitori sageli, saate SSMS-i konfigureerida nii, et see käivituks automaatselt iga kord, kui rakenduse käivitate:
- In SQL Server Management Studio, navigeeri TÖÖRIISTAD -> Valikud.
- Laiendage dialoogiboksis Suvandid keskkondJa valige Startup.
- Alates Käivitamisel rippmenüüst valige Ava Objektihaldur ja Aktiivsusmonitor.
- valima OK.
Järgmisel korral, kui käivitate SSMS-i ja loote ühenduse serveriga, avaneb automaatselt ka tegevuste monitor koos objektide uurijaga.
3. Aktiivsusmonitori paanide mõistmine
Tegevusmonitor korraldab teabe viieks laiendatavaks paaniks, millest igaüks pakub serveritegevusele erinevat vaatenurka. Iga paani kuvatava teabe mõistmine on tõhusa tõrkeotsingu jaoks ülioluline.
3.1 Ülevaatepaan
Ülevaatepaanil on neli reaalajas graafikut, mis annavad teile kiire ülevaate teie seisundist. SQL Server näiteks. Need graafikud uuenevad konfigureeritava intervalliga ja aitavad teil ebanormaalseid mustreid lühidalt tuvastada.
3.1.1% protsessori aeg
See graafik näitab protsenti ajast, mille protsessor kulutab mittejõudeolekus lõimede käivitamisele. SQL Server eksemplari kõigis protsessorites. Väärtus esindab SQL Serverprotsessori kasutus, mitte kogu serveri protsessori kasutus.
Kui protsessori aeg on pidevalt 100% või selle lähedal, on teie server protsessori koormusega. See võib viidata ebaefektiivsetele päringutele, puuduvatele indeksite või ebapiisavale riistvaravõimsusele. Kasutage paani „Hiljutised kallid päringud”, et tuvastada, millised päringud tarbivad kõige rohkem protsessori koormust.
3.1.2 Ootel olevad ülesanded
See mõõdik näitab ülesannete arvu, mis ootavad ressursside vabastamist enne nende jätkamist. Ülesanded võivad oodata protsessori, sisend-/väljundvõimsuse, mälu või lukustuste olemasolu.
Pidevalt suur arv ooteülesandeid viitab ressursikonkurentsile. Paanil „Ressursi ooteajad“ on lisateavet ooteaegu põhjustavate ressursside tüübide kohta.
3.1.3 Andmebaasi sisend/väljund (MB/s)
See graafik näitab mälu ja ketta vahelist andmeedastuskiirust. See ühendab nii lugemis- kui ka kirjutamiskiiruse, mõõdetuna megabaitides sekundis.
Andmebaasi sisend-/väljundvõimsuse hüpped võivad viidata päringutele, mis teostavad suuri tabelite skaneeringuid, liigsele logimisaktiivsusele või kontrollpunkti toimingutele. Andmefaili sisend-/väljundpaan jaotab sisend-/väljundaktiivsuse andmebaasi ja faili järgi.
3.1.4 Paketttaotlused sekundis
See näitaja näitab arvu SQL Server eksemplari poolt sekundis vastuvõetud partiide arv. Partii võib olla üks avaldus või mitu koos esitatud avaldust.
See väärtus annab ülevaate serveri üldisest aktiivsusest. Paketttaotluste arvu järsk langus tavalisel tööajal võib viidata rakenduste ühenduvusprobleemidele või kasutajate ees seisvatele probleemidele.
3.1.5 Värskendusintervallide määramine
Saate kohandada, kui sageli Activity Monitor oma andmeid värskendab:
- Paremklõpsake ülevaatepaanil suvalises kohas.
- valima Värskendusintervall.
- Valige intervall eelmääratletud väärtuste hulgast: 1 sekund, 5 sekundit, 10 sekundit (vaikimisi), 30 sekundit, 1 minut või 1 tund.
Värskendusintervallide määramine alla 10 sekundi suurendab serveri jälgimiskoormust. Suure koormuse all olevate tootmissüsteemide puhul kaaluge mõju minimeerimiseks 30-sekundiliste või pikemate intervallide kasutamist.
3.2 Protsesside paan
Protsesside paan kuvab teavet teie arvutis hetkel töötavate seansside kohta. SQL Server näiteks. See paan on oluline selleks, et tuvastada, kes mida teeb, ja märgata blokeerivaid probleeme.
3.2.1 Protsessiinfo mõistmine
Iga rida paanil Protsessid tähistab serveris aktiivset seanssi. Paanil kuvatakse kõigi andmebaaside ja kõigi kasutajate seansid, andes teile serveri aktiivsusest tervikliku ülevaate.
Kuvatav teave sisaldab sisselogimisnime, rakenduse nime, hostinime, ligipääsetavat andmebaasi ja praegust käsku. See aitab teil andmebaasi tegevust seostada konkreetsete kasutajate või rakendustega.
3.2.2 Põhiveergude selgitus
Põhiveergude mõistmine aitab teil protsessiinfot tõhusalt tõlgendada:
- Seansi ID: Iga ühenduse unikaalne identifikaator. Süsteemiprotsessid kasutavad negatiivseid seansi ID-sid.
- Kasutaja protsess: Näitab, kas tegemist on kasutajaseansiga (Jah) või süsteemiprotsessiga (Ei).
- Sisene: . SQL Server seansiga seotud sisselogimisnimi või Windowsi konto.
- Andmebaas: Seansi praegune andmebaasi kontekst.
- Ülesande olek: Näitab, mida seanss hetkel teeb (TÖÖTAB, PEATATUD, MAGAB jne).
- käsk: Täidetava käsu tüüp (SELECT, INSERT, UPDATE jne).
- Kuidas kasutatda: Ühenduse loonud rakenduse nimi.
- Ooteaeg: Kui kaua (millisekundites) on seanss ressursse oodanud.
- Ootetüüp: Konkreetne ressursi tüüp, mida seanss ootab.
- Protsessori aeg: Selle seansi kogu protsessorikulu alates ühenduse loomisest.
- Mälukasutus: Seansile hetkel eraldatud mälumaht (KB-des).
3.2.3 Filtreerimis- ja sortimisprotsessid
Protsesside paan sisaldab võimsaid filtreerimisvõimalusi, mis aitavad teil keskenduda asjakohastele seanssidele:
- Klõpsake mis tahes veeru päises rippmenüü noolel.
- Filter kuvab selle veeru jaoks saadaolevad väärtused, sh KÕIK, Toorikudja Mittetühjad.
- Valige kindlad väärtused, et filtreerida kuva ainult nende seansside kuvamiseks.
Näiteks saate filtreerida Ülesande olek ainult TÖÖSOLEVATE seansside kuvamiseks või filtreerimiseks andmebaas et näha tegevust konkreetses andmebaasis.
Samuti saate sortida mis tahes veeru järgi, klõpsates selle päisel. Kasvava järjestuse jaoks klõpsake üks kord, kahaneva järjestuse jaoks kaks korda.
3.2.4 Blokeerivate ja blokeeritud seansside tuvastamine
Protsesside paan aitab teil tuvastada blokeerivaid stsenaariume, kus üks seanss takistab teistel jätkamist.
- Blokeerija: Näitab selle seansi blokeeriva seansi ID-d. Kui see veerg sisaldab väärtust, ootab seanss teise seansi poolt hoitavat lukustust.
- Pea blokeerija: Kuvab väärtuse „1”, kui see seanss blokeerib teisi, kuid ise pole blokeeritud. See on blokeeriva ahela algpõhjus.
Blokeerimisprobleemi uurimiseks tuvastage kõigepealt seanss, mis on märgitud seansi „Head Blocker” veerus numbriga „1”, seejärel uurige selle tegevust ja otsustage, kas lasta sellel lõpule viia või see lõpetada.
3.2.5 Protsessi toimingud (Kill, Details, Trace)
Aktiivsusmonitor võimaldab teil üksikute seansside puhul toiminguid teha:
- Paremklõpsake protsesside paanil mis tahes seansil.
- Näete mitut valikut:
- Detailid: Näitab selle seansi viimast täidetud käsku.
- Tapmisprotsess: Lõpetab seansi (kasutage ettevaatlikult).
- Jälgimisprotsess sees SQL Server profileerija: Kaatrid SQL Server Profiler ja filtreerib automaatselt, et kuvada ainult selle seansi tegevust.
Suvand „Üksikasjad” kuvab käsu teksti, aga pane tähele, et see on viimane käsk käivitatud – see ei pruugi enam töötada. Jälgimisvalik on eriti kasulik siis, kui teil on vaja näha seansi käivitatavate käskude täielikku jada.
3.3 Ressursi ooteaegade paan
Ressursside ooteaegade paan võtab kokku ooteaegade statistika, näidates, millist tüüpi ressursse seansid kõige sagedamini ootavad. See teave on jõudlusprobleemide diagnoosimiseks ülioluline.
3.3.1 Ooteaja statistika mõistmine
Kui SQL Server Kui ressursitaotlust (nt lukustus, protsessori aeg või mälu) ei saa kohe rahuldada, läheb taotlev ülesanne ooteolekusse. Ooteaja statistika jälgib neid ooteaegu ja aitab teil mõista, millal server ootab, mitte ei tööta.
Ressursi ooteaegade paan kogub andmeid süsteemi dünaamilise halduse vaadetest, näiteks sys.dm_os_wait_stats ja sys.dm_exec_requests. Iga värskendusintervalli järel arvutatakse praeguse ja eelmise hetktõmmise vahe, näidates iga ootetüübi akumuleerumise määra.
3.3.2 Ootekategooriad
Aktiivsusmonitor jagab sadu individuaalseid ootetüüpe laiematesse kategooriatesse, et lihtsustada tõlgendamist:
- CPU: Ülesanded, mis ootavad protsessori aja vabanemist.
- Puhverlukk: Ootab lühiajalisi sünkroniseerimisobjekte, mis kaitsevad juurdepääsu mälus olevatele andmelehtedele. See kategooria hõlmab lehe lukustusega ooteaegu (PAGELATCH_*).
- Lukustamine: Ooteajad, mis on põhjustatud seanssidest, millel on lukud, mida teised seansid vajavad.
- Mälu: Ootab mälu eraldamist, mida vajavad sellised toimingud nagu sortimine ja räsimine.
- Võrgu sisend/väljund: Ootab andmete saatmist klientidele või andmete vastuvõtmist klientidelt.
- SQL CLR: Common Language Runtime'i täitmisega seotud ooteajad.
Kuigi see rühmitamine lihtsustab vaadet, varjab see ka olulisi detaile. Näiteks võib „Puhverlukk” rühmitada kokku PAGELATCH_SH, PAGELATCH_UP ja PAGELATCH_EX ooteajad, millel on jõudlusele erinev mõju.
3.3.3 Ooteaja ja ooteülesannete tõlgendamine
Ressursi ooteaegade paan kuvab iga ootekategooria kohta kaks peamist mõõdikut:
- Kumulatiivne ooteaeg (ms): Selle ootekategooria praeguse värskendusintervalli jooksul kogunenud millisekundite koguarv.
- Ootavad ülesanded: Selle kategooria ressursside ootavate ülesannete arv.
Eriti huvitav on ooteaja väärtus. Kui värskendusintervall on 10-sekundiline ja kategooria ooteaeg on 20 000 ms, näitab see mitut samaaegset ooteaega (20 000 ms / 10 000 ms = kahe samaaegse ooteaja keskmine intervalli jooksul).
3.3.4 Toimivuse kitsaskohtade tuvastamine
Kasutage paani „Ressursi ooteajad“, et tuvastada, kus teie server kõige rohkem aega ootab:
- Laiendage paani Ressursi ooteajad.
- Jälgige ootekategooriaid, kus ooteajad on kõige pikemad.
- Sorteeri Kumulatiivne ooteaeg et näha, millised ressursid on kõige piiratumad.
Pikad puhverluku ooteajad viitavad sageli mälus olevate andmelehtede pärast konkureerimisele, mis võib viidata sisend-/väljundkitsaskohtadele või ajutise andmebaasi konkureerimisele. Pikad lukustusooteajad viitavad blokeerimisprobleemidele. Pikad mäluooteajad viitavad päringutoimingute jaoks ebapiisavale mälule.
3.4 Andmefaili I/O paan
Andmefaili sisend-/väljundpaan näitab iga serveri andmebaasifaili kettaaktiivsust, aidates teil tuvastada sisend-/väljundkitsaskohti ja mõista ketta kasutusmustreid.
3.4.1 I/O-mõõdikute mõistmine
Andmefaili sisend-/väljundpaanil kuvatakse iga andmebaasifaili kohta mitu mõõdikut:
- Andmebaas: Andmebaasi nimi.
- Faili tüüp: Kas andmed (sh tabelid ja indeksid) või logi (tehingute logi).
- Loogiline nimi: Loogiline failinimi, nagu on määratletud jaotises SQL Server.
- MB/s lugemine: Sellest failist andmete lugemise kiirus.
- MB/sek kirjutatud: Sellesse faili andmete kirjutamise kiirus.
- Reaktsiooniaeg (ms): Selle faili I/O-toimingute keskmine reageerimisaeg.
Need mõõdikud värskendatakse sama intervalliga kui ülevaatepaan, andes teile reaalajas ülevaate ketta aktiivsusest.
3.4.2 Sisend-/väljundkitsaskohtade tuvastamine
Jälgige neid mustreid, mis viitavad sisend-/väljundjõudluse probleemidele:
- Kõrge reageerimisaeg: Pidevalt üle 15–20 ms olevad reageerimisajad viitavad aeglastele ketta alamsüsteemidele. Üle 50 ms olevad reageerimisajad viitavad tõsistele sisend-/väljundprobleemidele.
- Tasakaalustamata koormus: Kui üks andmefail näitab samas andmebaasis olevatest teistest oluliselt kõrgemaid sisend-/väljundkiirusi, võib koormuse jaotamiseks olla kasulik lisada täiendavaid faile.
- Liigne Tempdb aktiivsus: Tempdb-failide kõrge I/O-kiirus viitab sageli päringutele, mis loovad suuri vahetulemuste komplekte või kasutavad ebaefektiivseid täitmisplaane.
3.4.3 Andmebaasifailide analüüs
Andmefaili sisend-/väljundpaani abil saate aru, kuidas teie andmebaasid kettaressursse kasutavad.
- Laiendage paani Andmefaili sisend/väljund.
- Sorteeri MB/s lugemine or MB/s kirjutatud kõige aktiivsemate failide tuvastamiseks.
- Pange tähele faile, millel on pidevalt suur aktiivsus või pikk reageerimisaeg.
- Võrrelge seda teavet paaniga Hiljutised kallid päringud, et tuvastada, millised päringud sisend-/väljundkoormust põhjustavad.
3.5 Hiljutiste kallite päringute paan
Hiljutiste kallite päringute paan on rakenduste jõudlusprobleemide tõrkeotsinguks sageli kõige väärtuslikum. See kuvab päringuid, mis tarbivad märkimisväärsel hulgal serveriressursse, aidates teil tuvastada optimeerimisvõimalusi.
3.5.1 Päringu mõõdikute mõistmine
Aktiivsusmonitor kuvab iga kalli päringu kohta mitu mõõdikut:
- Hukkamisi minutis: Mitu korda päringut viimase minuti jooksul käivitati.
- Protsessor (ms/s): Selle päringu poolt sekundis kuluv protsessori aeg.
- Füüsiline lugemine sekundis: Selle päringu puhul füüsiliste ketaste lugemiste arv sekundis.
- Loogilised kirjutused sekundis: Loogiliste kirjutuste arv (vahemälu puhverdamiseks) sekundis.
- Loogilised lugemised sekundis: Loogiliste lugemiste arv (puhvri vahemälust) sekundis.
- Keskmine kestus (ms): Selle päringu keskmine täitmisaeg.
- Plaanide arv: Selle päringu jaoks vahemälus olevate täitmisplaanide arv.
Need mõõdikud aitavad teil mõista mitte ainult seda, millised päringud on kallid, vaid ka miks need on kallid ja kui tihti nad sõidavad.
3.5.2 Sorteerimisvalikud
Saate paani Hiljutised kallid päringud sortida erinevate mõõdikute järgi, et leida erinevat tüüpi probleeme.
- Klõpsake suvalisel veeru päisel, et sortida selle mõõdiku järgi.
- Levinud sorteerimisstrateegiate hulka kuuluvad:
- Sorteeri protsessori järgi: Leia päringud, mis võtavad kõige rohkem protsessori aega.
- Sorteeri täitmiste arvu järgi minutis: Tuvastage päringud, mis esitatakse liiga sageli.
- Sorteeri füüsiliste lugemiste järgi: Leia päringud, mis põhjustavad kõige rohkem ketta sisend-/väljundvõimsust.
- Sorteeri keskmise kestuse järgi: Leidke pikalt kestvaid päringuid.
Jõudlusprobleemi tõrkeotsingul proovige sortida mitme veeru järgi, et saada erinevaid vaatenurki. Teie tegelik probleem võib olla päring, millel on mõõdukas protsessori kasutus, kuid äärmiselt kõrge täitmissagedus minutis.
3.5.3 Päringu teksti vaatamine
Kalli päringu taga oleva tegeliku SQL-lause nägemiseks toimige järgmiselt.
- Paremklõpsake päringureal paanil Hiljutised kallid päringud.
- valima Päringu teksti muutmine.
- Avaneb uus päringuaken, kus kuvatakse täielik SQL-lause.
See võimaldab teil uurida päringu loogikat ja tuvastada potentsiaalseid optimeerimisvõimalusi. Seejärel saate päringu teksti kopeerida muudetud versioonide testimiseks.
3.5.4 Täitmisplaanide analüüsimine
Täitmisplaanid näitavad teile, kuidas SQL Server käivitab päringu, paljastades ebaefektiivsuse, näiteks puuduvad indeksid või sobimatud liitumistüübid:
- Paremklõpsake päringureal paanil Hiljutised kallid päringud.
- valima Näita teostusplaani.
- SQL Server Management Studio kuvab päringu täitmise graafilise esituse.
Otsige toiminguid, mis võtavad päringu maksumusest suure osa, hoiatusi puuduva statistika või indeksite kohta ja ootamatuid tabeli skannimise toiminguid. Need näitavad sageli, millele optimeerimispüüdlused peaksid keskenduma.
3.5.5 Probleemsete päringute tuvastamine
Jälgige neid mustreid paanil Hiljutised kallid päringud:
- Liigsed hukkamised: Päring, mis käivitub tuhandeid kordi minutis, võib viidata N+1 päringu probleemile, kus rakenduse kood kutsub andmebaasi tsükli sees.
- Kõrge füüsiline lugemiskogemus: Kõrge füüsilise lugemiskiirusega päringud jõuavad kettale sageli, mis viitab puuduvatele indeksitele või halvasti kirjutatud päringutele.
- Kõrge protsessorivõimsus madala kestusega: Paljud kiired päringud, mis tarbivad kokkuvõttes palju protsessorit, võivad serveri jõudlust sama palju mõjutada kui mõned aeglased päringud.
- Mitme plaani arv: Paljude täitmisplaanidega päringud võivad kannatada parameetrite nuhkimise või parameetriteta päringute all, mis põhjustavad plaani vahemälu paisumist.
4. Aktiivsusmonitori kasutamine jõudluse tõrkeotsinguks
Aktiivsusmonitor särab tõeliselt siis, kui seda süstemaatiliselt jõudlusprobleemide diagnoosimiseks ja lahendamiseks kasutada. See jaotis käsitleb levinud tõrkeotsingu stsenaariume ja nende lahendamise viise.
4.1 Liigse päringute täitmise diagnoosimine
Üks levinumaid jõudlusprobleeme on päringute sagedasem käivitamine kui vaja, sageli rakenduse disainiprobleemide tõttu.
4.1.1 Korduvate päringute tuvastamine
Liiga sageli käivitatavate päringute tuvastamiseks toimige järgmiselt.
- Avage tegevuste monitor ja laiendage Hiljutised kallid päringud pane.
- Sorteeri Täitmisi minutis (hukkamisi minutis).
- Otsige ülaosast päringuid, mille täitmisarv tundub ebamõistlikult kõrge.
- Paremklõpsake kahtlase päringu peal ja valige Päringu teksti muutmine SQL-lause uurimiseks.
Näiteks kui näete lihtsat SELECT-lauset, mis käivitub 37 000 korda minutis, siis küsige, kas rakendus peab seda päringut tõesti nii tihti kutsuma. Enamik päringuid, mis käivituvad rohkem kui paar tuhat korda minutis, väärivad uurimist.
4.1.2 Algpõhjuste analüüs
Liigne päringute täitmine tuleneb tavaliselt järgmistest probleemidest:
- N+1 päringu probleem: Rakenduskood hangib üksuste loendi ja seejärel käivitab iga üksuse jaoks eraldi päringu, et hankida seotud andmeid. See loob N täiendavat päringut, kus N on üksuste arv.
- Puuduv vahemälu: Rakendus pärib andmebaasist harva muutuvate andmete kohta, selle asemel et neid rakenduse mällu vahemällu salvestada.
- Küsitlusringid: Kood pärib andmebaasile korduvalt oleku muutusi, selle asemel et kasutada muudatusteatisi või sõnumijärjekordi.
- ORM-i ebaefektiivsus: Entity Framework ja sarnased tööriistad genereerivad mõnikord ebaefektiivseid päringumustreid, kui arendajad ei saa aru, kuidas nende kood SQL-iks tõlgitakse.
Põhjuse algpõhjuse kindlakstegemiseks jälgige päringut rakenduse koodini. Pange tähele taotlus ja Logi sisse veerud protsesside paanil päringu täitmise ajal. Samuti saate protsessi paremklõpsata ja valida Jälgimisprotsess sees SQL Server Profiler helistamismustri nägemiseks.
4.1.3 Lahendused ja parimad tavad
Kui olete tuvastanud liigse päringute täitmise, kaaluge järgmisi lahendusi.
- Partii töötlemine: Muutke rakenduse koodi nii, et see tooks ühe päringuga mitu elementi, kasutades liitmisi või IN-klausleid, selle asemel, et käivitada eraldi päringuid tsüklis.
- Tulemuste vahemällu salvestamine: Rakenduse mälus olevad sageli ligipääsetavad ja harva muutuvad andmed sobivate aegumisaegadega.
- Innukas laadimine: Konfigureeri ORM-id kasutama innukalt laadimise strateegiaid, mis hangivad seotud andmeid vähemate ja tõhusamate päringutega.
- Päringu parameetriseerimine: Veenduge, et päringud kasutaksid parameetreid, mitte väärtuste liitmist, mis parandab plaani vahemälu taaskasutamist ja vähendab kompileerimise üldkulu.
4.2 Blokeerimisprobleemide uurimine
Blokeerimine toimub siis, kui ühel seansil on lukud, mis takistavad teiste seansside jätkamist. See avaldub rakenduste aeglase reageerimisaja ja pettunud kasutajatena.
4.2.1 Blokeerivate ahelate tuvastamine
Blokeeringu tuvastamiseks ja analüüsimiseks:
- Avage tegevuste monitor ja laiendage protsessid pane.
- Otsige seansse, mille väärtused on vahemikus Blokeeritud veerg – need ootavad teiste seansside poolt hoitavaid lukke.
- Leia seansse, mille sees on '1' Pea blokeerija veerg – need on ahelate blokeerimise algpõhjus.
- Pange tähele Seansi ID pea blokeerijast.
- Paremklõpsake pea blokeerimise seanssi ja valige Detailid et näha, millist käsku see täidab.
Blokeeriva ahela mõistmine on ülioluline. Uurida tuleb peamist blokeerijat, mitte järgnevaid blokeeritud seansse.
4.2.2 Lukkude tüüpide mõistmine
. Ootetüüp Protsesside paanil olev veerg näitab, millist tüüpi lukustusblokeeringuid seansid ootavad:
- LCK_M_X: Eksklusiivne lukustusooteaeg, mille põhjustavad tavaliselt UPDATE, DELETE või INSERT toimingud.
- LCK_M_S: Jagatud lukustuse ootamine, tavaliselt SELECT-laused, mis ootavad eksklusiivsete lukkude vabastamist.
- LCK_M_U: Värskenduse lukustuse ootamine, vahepealne lukustustüüp, mida kasutatakse värskenduste ajal.
- LCK_M_IX: Intent eksklusiivse lukustuse ooteaeg, mis näitab lehe- või reataseme lukustuse vaidlustamist.
. Oota ressurss veerg näitab, milline andmebaasiobjekt on lukustatud, aidates teil mõista, milline tabel või indeks on vaidlusega seotud.
4.2.3 Blokeerimisprobleemide lahendamine
Kui olete blokeeriva seansi ja selle tegevuse tuvastanud, on teil mitu võimalust:
- Oodake lõpetamist: Kui päringu blokeerija käivitab õige päringu, mis peagi lõpule jõuab, võib olla kõige parem lasta sellel loomulikult lõpule viia.
- Lõpeta seanss: Kui päringu blokeerija on kinni jäänud või käivitab päringu, mis tuleks tühistada:
- Paremklõpsake seansil protsesside paanil.
- valima Tapmisprotsess.
- Kinnitage toiming dialoogiboksis.
- Päringute optimeerimine: Kui blokeerimine kordub samade päringute korral, optimeerige neid, et lühendada lukustuse kestust.
- Isolatsioonitasemete reguleerimine: Kaalu lugemismahukate töökoormuste blokeerimise vähendamiseks funktsiooni READ COMMITTED SNAPSHOT ISOLATION kasutamist.
- Indeksi häälestamine: Lisage indeksid päringute kiirendamiseks, lühendades lukkude hoidmise aega.
4.3 Suure protsessorikasutuse analüüsimine
Kui ülevaatepaan näitab protsessori aega pidevalt 100% või selle lähedal, peate tuvastama, millised päringud selle eest vastutavad, ja otsustama, kas neid saab optimeerida.
4.3.1 Protsessori koormust nõudvate päringute tuvastamine
Liigselt protsessorit tarbivate päringute leidmiseks toimige järgmiselt.
- avage Hiljutised kallid päringud pane.
- Sorteeri Protsessor (ms/s) et kuvada päringuid, mis kasutavad kõige rohkem protsessori aega.
- Uurige loendis olevaid populaarseimaid päringuid.
- Paremklõpsake kõrge protsessorivõimsusega päringutel ja valige Päringu teksti muutmine SQL-lause vaatamiseks.
- valima Näita teostusplaani et mõista, kuidas päring töötab.
Pöörake tähelepanu mitte ainult üksikute päringute protsessori kasutamisele, vaid ka Täitmisi minutis veerg. Päring, mis kasutab täitmistsükli kohta mõõdukat protsessori koormust, kuid töötab tuhandeid kordi minutis, võib olla teie suurim protsessori tarbija.
4.3.2 Päringute optimeerimise tehnikad
Protsessori tarbimise vähendamise levinumad meetodid on järgmised:
- Lisa puuduvad indeksid: Indeksiotsingud kasutavad palju vähem protsessorit kui tabelite skaneerimine. Otsige puuduvaid indeksisoovitusi täitmisplaanidest.
- Kirjutage ebaefektiivsed päringud ümber: Asenda kursorid hulgapõhiste toimingutega, kõrvalda WHERE-klauslitest ebavajalikud funktsioonid ja eemalda üleliigsed ühendused.
- Statistika värskendamine: Vananenud statistika põhjustab SQL Server ebaefektiivsete täitmisplaanide valimiseks. Käivita mõjutatud tabelitel käsk UPDATE STATISTICS.
- Andmemahu vähendamine: Lisage WHERE-klauslid andmete varasemaks filtreerimiseks, kasutage lehekülgede nummerdamiseks TOP-i või OFFSET/FETCH-i ja vältige SELECT *-i.
- Parameetri nuusutamise parandamine: Kui parameetrite nuhkimine probleeme tekitab, kasutage OPTION (RECOMPILE), päringuvihjeid või plaanijuhiseid.
4.4 Mäluprobleemide uurimine
Mäluprobleemid võivad põhjustada päringute kettale valgumist, mis halvendab oluliselt jõudlust. Tegevuste jälgimine aitab tuvastada mälumahukaid toiminguid.
4.4.1 Mälumõõdikute mõistmine
. Mälukasutus Protsesside paani veerus kuvatakse igale seansile eraldatud mälu kilobaitides. Ühe seansi suur mälukasutus näitab sageli järgmist:
- Suured sortimis- või räsioperatsioonid, mis ei mahtunud algselt eraldatud mällu
- Päringud, mis hangivad tohutuid tulemuste komplekte
- Liigne paralleelsus, mis loob palju koopiaid täitmisplaani operaatoritest
- Mälulekked CLR-i salvestatud protseduurides või funktsioonides
Paanil „Ressursi ooteajad” võidakse kuvada teade „Mälu ooteajad”, kui päringud ei saa piisavalt mälumahtu ja peavad ootama mälu vabanemist.
4.4.2 Mälumahukate päringute tuvastamine
Mälu survet põhjustavate päringute leidmiseks toimige järgmiselt.
- aasta protsessid paan, sorteeri Mälukasutus et näha seansse, mis tarbivad kõige rohkem mälu.
- Paremklõpsake suure mälukasutusega seanssidel ja valige Detailid et vaadata nende päringuid.
- aasta Hiljutised kallid päringud paanil otsige päringuid, millel on kõrge Loogilised lugemised or Loogilised kirjutused, kuna need on sageli seotud mälukasutusega.
- Uurige mälu eraldamist kasutavate sortimis- ja räsiotsinguoperaatorite täitmisplaane.
Päringud, mis kuvavad täitmisplaanides hoiatusi „Mälu eraldamine” või lekkehoiatusi, viitavad mälukoormuse probleemidele.
4.5 Rakenduse jõudlusprobleemide tuvastamine
Kui kasutajad teatavad rakenduste aeglasest reageerimisajast, aitab Activity Monitor teil kindlaks teha, kas andmebaas on pudelikaelaks.
4.5.1 Aktiivsusmonitori seostamine rakenduse probleemidega
Rakenduse aegluse uurimiseks tehke järgmist.
- Pange tähele täpset aega, millal kasutajad probleemidest teatavad, ja rakendusi, mis probleemid on mõjutanud.
- Avage Aktiivsusmonitor ja kontrollige Ülevaade paan ressursside järskude tõusude ja languste kohta sel ajal.
- aasta protsessid paan, filtreeri taotlus kuvada ainult mõjutatud rakenduse ühendusi.
- Otsige kõrget Ooteaeg väärtused, mis näitavad andmebaasi viivitusi.
- Vaata Hiljutised kallid päringud paan selle rakenduse päringute jaoks, mis tarbivad märkimisväärselt ressursse.
Kui andmebaas ei näita ebatavalist tegevust, samas kui kasutajad kogevad aeglust, peitub probleem tõenäoliselt rakenduse koodis, võrgu latentsuses või kliendipoolses jõudluses.
4.5.2 Ebaefektiivsete rakendusmustrite tuvastamine
Aktiivsusmonitor paljastab rakenduste disainis mitu negatiivset mustrit:
- Jutukas rakendused: Palju väikeseid päringuid vähemate ja tõhusamate päringute asemel. Seda iseloomustab suur ühenduste arv ja arvukad lihtsad päringud hiljutiste kallite päringute hulgas.
- N+1 päringut: Üks päring, millele järgneb N täiendavat päringut seotud andmete jaoks. Kuvatakse lihtsa päringuna, millel on äärmiselt kõrge täitmissagedus minutis.
- Suured tulemuste komplektid: Rakendused hangivad palju rohkem andmeid kui vaja. Otsige kõrget Loogilised lugemised koos lihtsate SELECT * päringutega.
- Puuduvad ajalõpud: Rakendused, mis ei määra käskude ajalõpusid, võivad jätta ühendused määramata ajaks avatuks, mis on nähtavad protsesside paanil pikaajaliste seanssidena.
5. Alternatiivsed meetodid: aktiivsuse jälgimise andmete hankimine T-SQL-i kaudu
Kuigi Activity Monitor pakub mugavat graafilist liidest, peate mõnikord samaväärset teavet programmiliselt hankima või looma kohandatud jälgimislahendusi.
5.1 Dünaamiliste haldusvaadete (DMV-de) kasutamine
SQL Server avaldab tegevuste kohta teavet dünaamiliste haldusvaadete kaudu, mida tegevuste monitor päringuid teeb kulisside taga.
5.1.1 Aktiivsuse jälgimise peamised DMV-d
Aktiivsusmonitori funktsionaalsuse replikatsiooniks kõige olulisemad DMV-d on järgmised:
- sys.dm_exec_requests: Näitab hetkel täidetavaid päringuid koos protsessori, sisend-/väljundaja ja ooteaja teabega.
- sys.dm_exec_sessions: Sisaldab seansi tasemel teavet, näiteks sisselogimisnime, hostinime ja programmi nime.
- sys.dm_os_wait_stats: Pakub kogu eksemplari kumulatiivset ooteaja statistikat.
- sys.dm_exec_query_stats: Sisaldab vahemällu salvestatud päringute koondjõudlusstatistikat.
- sys.dm_io_virtual_file_stats: Tagastab andmete ja logifailide sisend-/väljundstatistika.
- sys.dm_exec_sql_text: Tagastab antud sql_handle'i või plan_handle'i SQL-teksti.
- sys.dm_exec_query_plan: Tagastab vahemällu salvestatud päringu täitmisplaani.
5.1.2 Protsessiteabe näidispäringud
Protsesside paani funktsionaalsuse kopeerimiseks saate päringu teha:
SELECT
s.session_id AS [Session ID],
CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
s.login_name AS [Login],
ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), '') AS [Database],
ISNULL(t.task_state, '') AS [Task State],
ISNULL(r.command, '') AS [Command],
r.cpu_time AS [CPU Time],
r.total_elapsed_time AS [Elapsed Time],
r.wait_time AS [Wait Time],
r.wait_type AS [Wait Type],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
5.1.3 Näidispäringud ooteaja statistika jaoks
Ressursi ooteaegade paaniga sarnase ooteaja statistika kuvamiseks tehke järgmist.
SELECT TOP 10
wait_type AS [Wait Type],
wait_time_ms / 1000.0 AS [Wait Time (sec)],
waiting_tasks_count AS [Waiting Tasks],
wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
AND wait_type NOT LIKE '%IDLE%'
AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;
5.2 sp_WhoIsActive'i kasutamine
sp_WhoIsActive on võimas kogukonna loodud salvestatud protseduur, mis pakub ühes tulemite komplektis üksikasjalikumat teavet kui Activity Monitor.
5.2.1 sp_WhoIsActive'i installimine
Sp_WhoIsActive installimiseks:
- Laadige alla uusim versioon saidilt
http://whoisactive.com. - Allalaaditav fail on SQL-skript, mis sisaldab protseduuri definitsiooni.
- Ava skript rakenduses SQL Server Juhtimisstuudio.
- Ühenda oma SQL Server Näiteks
- Käivitage skript protseduuri loomiseks põhiandmebaasis.
- Andke vastavatele kasutajatele täitmisõigused.
Kuna sp_WhoIsActive on installitud põhimappi, on see ligipääsetav mis tahes andmebaasi kontekstist.
5.2.2 Põhilised kasutusnäited
Lihtsaim viis sp_WhoIsActive kasutamiseks on:
EXEC sp_WhoIsActive;
See tagastab tulemuste komplekti, mis näitab kõiki aktiivseid seansse koos nende päringute, ootetüüpide, blokeerimisteabe ja ressursikasutusega.
10-sekundilise näidise jaoks, mis näitab aktiivsust sellel perioodil:
EXEC sp_WhoIsActive @delta_interval = 10;
See arvutab selliste mõõdikute nagu protsessori ja lugemiste deltasid, näidates, mis nende 10 sekundi jooksul juhtus.
5.2.3 Täiustatud parameetrid
sp_WhoIsActive toetab arvukalt kohandamise parameetreid:
- @filter: Filtreeri tulemusi konkreetsete seansside, andmebaaside või sisselogimiste järgi.
- @filtri_tüüp: Määrake, millele filter kehtib (seanss, andmebaas, sisselogimine jne).
- @get_plans: Lisa tulemustesse teostusplaanid (määra väärtuseks 1).
- @get_locks: Kuva detailne lukustusinfo (seadista väärtuseks 1).
- @get_transaction_info: Kuva tehingu üksikasjad (seadista väärtuseks 1).
- @sortimisjärjekord: Järjesta tulemused erinevate mõõdikute (protsessori, lugemiste arv, kestus jne) järgi.
- @sihtkoha_tabel: Sisestage tulemused ajaloolise jälgimise tabelisse.
Näide, mis näitab protsessori järgi sorteeritud pakette:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Süsteemi salvestatud protseduuride kasutamine
SQL Server sisaldab traditsioonilisi salvestatud protseduure tegevuse jälgimiseks, kuigi need pakuvad vähem teavet kui DMV-d või tegevuse monitor.
5.3.1 sp_who ja sp_who2
Protseduur sp_who kuvab seansi põhiteavet:
EXEC sp_who;
Protseduur sp_who2 pakub veidi rohkem üksikasju:
EXEC sp_who2;
Mõlemad protseduurid näitavad seansi ID-sid, sisselogimisnimesid, protsessori aega ja blokeerimisteavet. Neil aga puudub DMV-de või tegevusmonitori kaudu saadaolev rikkalik teave. Need on kõige kasulikumad kiirete kontrollide jaoks, kui vajate kiiresti minimaalset teavet.
5.3.2 Muud kasulikud süsteemiprotseduurid
Täiendavad süsteemi jälgimisprotseduurid hõlmavad järgmist:
- sp_lock: Näitab lukustusteavet (aegunud; kasutage selle asemel sys.dm_tran_locks).
- sp_monitor: Kuvab statistikat järgmise kohta: SQL Server tegevus.
- sp_abi: Näitab objektide definitsioone ja metaandmeid.
- DBCC SQLPERF: Kuvab tehingute logi ruumi kasutust ja ooteaja statistikat.
5.4 Kohandatud jälgimisskriptide loomine
Keskkondade jaoks, mis vajavad spetsiifilist jälgimist lisaks Activity Monitori pakutavale, saate DMV-de abil luua kohandatud lahendusi.
5.4.1 Täieliku aktiivsuse monitori ekvivalentskript
Siin on põhjalik skript, mis kopeerib enamiku aktiivsuse monitori funktsioonidest:
-- Processes Information
SELECT
s.session_id AS [Session ID],
CONVERT(CHAR(1), s.is_user_process) AS [User Process],
s.login_name AS [Login],
ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), N'') AS [Database],
ISNULL(t.task_state, N'') AS [Task State],
ISNULL(r.command, N'') AS [Command],
SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset) / 2) + 1) AS [Statement],
st.text AS [Command Text],
r.cpu_time AS [CPU Time (ms)],
r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
r.wait_time AS [Wait Time (ms)],
r.wait_type AS [Wait Type],
r.wait_resource AS [Wait Resource],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
c.client_net_address AS [Net Address],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
-- Recent Expensive Queries
SELECT TOP 20
qs.execution_count /
DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
qs.total_worker_time / 1000 AS [CPU Time (ms)],
qs.total_physical_reads AS [Physical Reads],
qs.total_logical_writes AS [Logical Writes],
qs.total_logical_reads AS [Logical Reads],
qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;
5.4.2 SQL-agendi tööde jälgimise automatiseerimine
Saate kohandatud jälgimisskripte ajastada, kasutades SQL Server Agent:
- Loo tabel jälgimistulemuste salvestamiseks.
- Tulemuste sellesse tabelisse lisamiseks muutke oma jälgimisskripti.
- In SQL Server Management Studio, laienda SQL Server Agent Objektiuurijas.
- Paremklõpsake Tööturg ja valige Uus töökoht.
- Konfigureerige töö nii, et teie jälgimisskript käivitataks regulaarsete intervallide järel.
- Seadistage kogutud andmete põhjal märguandeid või aruandeid.
See lähenemisviis võimaldab ajaloolist jälgimist ja trendianalüüsi, mida Activity Monitor ei paku.
6. Aktiivsusmonitori piirangud ja kaalutlused
Kuigi Aktiivsusmonitor on väärtuslik, aitab selle piirangute mõistmine teil seda asjakohaselt kasutada ja vajadusel teiste tööriistadega täiendada.
6.1 Aktiivsusmonitori üldkulude mõistmine
Aktiivsusmonitor pole tasuta – see tarbib teabe kogumiseks ja kuvamiseks serveriressursse. Selle lisakoormuse mõistmine aitab teil seda vastutustundlikult kasutada.
6.1.1 Mõju serveriressurssidele
Aktiivsusmonitor käivitab süsteemi DMV-de kohta päringuid iga värskendamise ajal. Need päringud tarbivad protsessori ressursse, genereerivad loogilisi lugemisi ja võivad süsteemitabeleid ajutiselt lukustada. Ülekoormatud serverites võib see koormus jõudlust mõjutada.
Protsesside ja hiljutiste kallite päringute paanid on eriti kallid, kuna need peavad skannima potentsiaalselt suuri andmevoo haldusfaile ja vahemällu salvestatud tabeleid. Serverites, kus on tuhandeid vahemällu salvestatud päringuplaane, võib hiljutiste kallite päringute värskendamine võtta mitu sekundit.
Microsofti dokumentatsioon hoiatab, et alla 10-sekundilised värskendusintervallid võivad serveri jõudlust märgatavalt mõjutada, eriti juba laaditud süsteemides.
6.1.2 Värskendusintervalli parimad tavad
Valige oma olukorrale sobivad värskendusintervallid:
- 1–5 sekundit: Ainult kriitiliste probleemide koheseks tõrkeotsinguks kergelt koormatud serverites. Ärge jätke aktiivsuse monitori nende intervallidega tööle.
- 10 sekundit (vaikimisi): Mõistlik enamiku tõrkeotsingu stsenaariumide ja üldise jälgimise jaoks.
- 30–60 sekundit: Parem valik suure koormuse all olevatele tootmisserveritele või pikaajaliseks jälgimiseks.
- Ainult käsitsi värskendamine: Olukordadeks, kus soovite aeg-ajalt kontrollida praegust olekut ilma pideva küsitluseta.
Sulgege alati tegevuste jälgija, kui olete uurimise lõpetanud. Ärge jätke seda pidevalt tööle, eriti kui tegemist on mitme eksemplariga erinevatelt kasutajatelt.
6.2 Ootetüübi rühmitamise probleemid
Aktiivsusmonitori lähenemine ooteaegade kategoriseerimisele võib küll vaadet lihtsustada, kuid olulist diagnostilist teavet varjata.
6.2.1 Kuidas aktiivsuse jälgimise rühmad ootavad
SQL Server jälgib sadu erinevaid ootetüüpe, millest igaüks näitab konkreetset ressurssi või olekut. Tegevuste jälgija jagab need laiematesse kategooriatesse nagu „Puhverlukk“, „Lukustus“ ja „Mälu“.
Näiteks kategooria „Puhverlukustus” hõlmab PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX ja mitmeid teisi spetsiifilisi ootetüüpe. Kuigi need kõik on seotud lehele juurdepääsuga, on neil erinevad põhjused ja lahendused.
Microsoft ei dokumenteeri täpselt, millised ootetüübid millistesse kategooriatesse kuuluvad, mistõttu on raske aru saada, mida te tegelikult näete.
6.2.2 Puuduvad ootetüübid
Aktiivsusmonitor ei näita kõiki ootetüüpe. Kõige märkimisväärsem on see, et see jätab sageli välja CXPACKET-ooteajad, mis viitavad päringute paralleelsele täitmisele. CXPACKET-ooteajad on levinud ja tavaliselt ei tekita probleeme, kuid nende olemasolu teadmine aitab teil mõista töökoormuse omadusi.
Kui Activity Monitor näitab suurima ooteajana „Buffer Latch”, aga teised tööriistad näitavad CXPACKETi domineerivat olekut, tuleneb lahknevus Activity Monitori filtreerimis- ja rühmitamisloogikast.
6.2.3 Miks on konkreetsed ootetüübid olulised
Konkreetse ootetüübi tundmine on tõrkeotsingu seisukohalt oluline:
- PAGELATCH_EX: Viitab sageli ajutise andmebaasi (tempdb) rikkumisele jaotuslehtedel. Lahendus hõlmab rohkemate ajutise andmebaasi andmefailide lisamist.
- PAGELATCH_SH: Võib viidata kasutajate tabelite kuumadele lehtedele. Lahendus hõlmab partitsioonimist või indeksi ümberkorraldamist.
- PAGELATCH_UP: Tavaline uuenduste ajal. Võib viidata pigem normaalsele tööle kui probleemile.
Aktiivsusmonitor koondab kõik need „Puhvri lukustuse” alla, mis muudab diagnoosimise raskemaks. Tööriistad nagu sp_WhoIsActive ja DMV päringud näitavad konkreetseid ootetüüpe.
6.3 Andmete täpsus ja ajakohasus
Aktiivsusmonitor pakub peaaegu reaalajas vaadet, aga „peaaegu“ on võtmesõna. Selle andmekogumismeetodi mõistmine aitab tulemusi õigesti tõlgendada.
6.3.1 Hetktõmmis vs pidev jälgimine
Aktiivsusmonitor kuvab iga värskendusintervalli ajal tehtud ajahetkepilte. Piltide vahel toimuvaid sündmusi ei jäädvustata. Kui päring kestab 2 sekundit ja värskendate iga 10 sekundi järel, võite seda olenevalt ajastusest näha üks kord või mitte üldse.
See tähendab, et tegevuste monitoril on suurepärased omadused püsivate probleemide leidmisel (kestvad blokeerimised, pidevalt kõrge protsessori koormus), kuid ajutised probleemid (lühiajalised ummikseisud, aeg-ajalt esinevad päringute arvu suurenemised) võivad märkamata jääda.
6.3.2 Koondamine ja valim
Paanil „Hiljutised kallid päringud“ kuvatakse andmed, mis on koondatud alates päringuplaanide vahemällu sisestamisest. Kaks identset päringut erinevate parameetriväärtustega kuvatakse ühe reana, kui neil on ühine plaan. See koondatav teave võib varjata teatud parameetrikombinatsioonidega seotud probleeme (parameetrite nuhkimise probleemid).
Ressursi ooteaegade paan arvutab ooteaegu hetktõmmiste võrdlemise teel. Kui ooteaegade statistika hetktõmmiste vahel lähtestatakse (harva, aga võimalik), võivad arvutatud ooteajad olla valed.
6.4 Millal EI TOHI aktiivsusmonitori kasutada
Aktiivsusmonitor ei sobi iga jälgimisstsenaariumi jaoks. Tuvastage, millal on alternatiivsed tööriistad paremad valikud.
6.4.1 Ajaloolise analüüsi nõuded
Aktiivsusmonitor näitab ainult praegust või hiljutist tegevust. See ei salvesta ajaloolisi andmeid. Kui teil on vaja analüüsida trende päevade või nädalate lõikes, võrrelda praegust jõudlust algtasemetega või genereerida aruandeid jõudlusmustrite kohta, siis Aktiivsusmonitorist ei piisa.
Ajaloolise analüüsi jaoks kasutage SQL Serversisseehitatud jõudluse armatuurlaud, laiendatud sündmused failisihtmärkidega või kolmandate osapoolte jälgimislahendused.
6.4.2 Vajalikud on detailsed ooteaja statistikad
Kui vajate täpsemat teavet ootetüübi kohta täpsemaks häälestamiseks, siis Activity Monitori grupeerimis- ja filtreerimisfunktsioonid ei ole piisavad. Kasutage otse DMV päringuid või sp_WhoIsActive funktsiooni.
Põhjaliku ooteaja statistika analüüsimiseks pärige otse sys.dm_os_wait_stats ja filtreerige healoomulised ooteajad käsitsi välja.
6.4.3 Tootmisserveri kaalutlused
Suure koormuse all olevatel tootmisserveritel võib Activity Monitori üldkulu olla problemaatiline. Mitu andmebaasi administraatorit ei tohiks Activity Monitori samal serveril samaaegselt käitada.
Tootmise jälgimiseks kaaluge kergemaid alternatiive, näiteks ajastatud DMV hetktõmmiseid, mis on salvestatud jälgimisandmebaasis, või kasutage alati sisse lülitatud konfiguratsioonides sekundaarsete koopiate jälgimiseks kirjutuskaitstud marsruutimist.
7. Aktiivsusmonitori kasutamise parimad tavad
Parima tava järgimine tagab, et saate Activity Monitorist maksimaalse väärtuse, minimeerides samal ajal negatiivset mõju oma serveritele.
7.1 Millal aktiivsusmonitori kasutada
Aktiivsusmonitor särab just kindlates olukordades. Kasuta seda siis, kui selle tugevused vastavad sinu vajadustele.
7.1.1 Reaalajas jõudlusprobleemid
Aktiivsusmonitor on ideaalne, kui kasutajatel on hetkel probleeme ja teil on vaja probleem kohe diagnoosida. Reaalajas vaade aitab teil näha, mis parasjagu toimub.
Kui saate teate, et „rakendus on aeglane”, peaks üks esimesi samme olema tegevuste monitori avamine. Saate kiiresti kindlaks teha, kas andmebaas on hõivatud, blokeeritud või jõudeolekus.
7.1.2 Rakenduse aeglustumise uurimine
Kui konkreetne rakendus lakkab reageerimast, aitab tegevuste jälgimine teil kindlaks teha, kas põhjuseks on andmebaasiprobleemid. Filtreerige protsesside paani rakenduse nime järgi, et näha ainult selle rakenduse andmebaasitegevust.
Kui rakendus ei näita andmebaasi aktiivsust, samal ajal kui kasutajad probleemidest teatavad, peitub probleem mujal pinus. Kui näete ulatuslikke blokeerimisi või kulukaid päringuid, olete süüdlase leidnud.
7.1.3 Kiired tervisekontrollid
Aktiivsusmonitor pakub suurepärast juhtpaneeli kiireks tervisekontrolliks tavapärase haldamise ajal. Avage see, vaadake ülevaategraafikuid ja veenduge, et midagi ebatavalist ei paista.
See pealiskaudne kontroll võtab sekundeid ja võib probleeme paljastada enne, kui need kriitiliseks muutuvad. Muutke see oma igapäevase rutiini osaks.
7.2 Optimaalsed konfiguratsiooniseaded
Aktiivsusmonitori sobiv seadistamine parandab nii selle kasulikkust kui ka ressursikulu.
7.2.1 Soovitatavad värskendusintervallid
Sobita oma värskendusintervall oma eesmärgiga:
- Aktiivne tõrkeotsing: 10 sekundit tagab hea reageerimisaja mõistliku üldkuluga.
- Laiendatud jälgimine: 30–60 sekundit vähendab serveri mõju pikemate vaatlusperioodide ajal.
- Kriitilise probleemi diagnoosimine: 5 sekundit annab suure detailsuse, kui iga sekund on oluline, aga kasutage seda lühidalt.
- Regulaarsed tervisekontrollid: Käsitsi värskendamine (1-tunnine intervall), kui te aktiivselt ei vaata.
Kui olete lõpetanud, ärge unustage tegevuste monitori sulgeda. Selle pika intervalli määramine ja seejärel unustamine raiskab serveri ressursse.
7.2.2 Filtreerimisstrateegiad
Kasutage filtreid, et keskenduda asjakohasele teabele ja vähendada kognitiivset koormust:
- Filtreeri protsesse alusena andmebaas et näha ainult tegevust konkreetsetes andmebaasides.
- Filtrid Logi sisse konkreetse kasutaja tegevuse jälgimiseks.
- Filtrid Ülesande olek = RUNNING jõudeolekusessioonide peitmiseks.
- Filtrid taotlus liikluse isoleerimiseks konkreetsetest programmidest.
- Näita ainult mittetühje Blokeeritud näha ainult blokeerivaid olukordi.
7.2.3 Veergude valik ja sortimine
Töötage välja süstemaatiline lähenemisviis aktiivsusmonitori andmete läbivaatamiseks:
- Alusta ülevaatest: Kontrollige graafikuid ilmsete järskude tõusude või anomaaliate suhtes.
- Kontrollige blokeeritud protsesse: Sorteeri seansi ID järgi ja otsi seejärel väärtusi „Blokeerija”.
- Vaadake ressursi ooteajad üle: Sorteeri ressursside kitsaskohtade tuvastamiseks kumulatiivse ooteaja järgi.
- Kallite päringute analüüsimine: Sorteeri erinevate mõõdikute (protsessori, täitmiste, lugemiste) järgi, et leida erinevat tüüpi probleeme.
- Kinnitage I/O paanil: Kinnitage, kas sisend-/väljundmahukad päringud on seotud suure kettaaktiivsusega.
7.3 Integreerimine teiste tööriistadega
Aktiivsusmonitor toimib kõige paremini osana laiemast tööriistakomplektist, mitte eraldiseisva lahendusena.
7.3.1 Kasutamine koos SQL Server Profiler
Aktiivsusmonitor ja SQL Server Profileerijad täiendavad teineteist hästi. Kui tuvastate tegevuste monitoris probleemse seansi, paremklõpsake sellel ja valige Jälgimisprotsess sees SQL Server Profiler.
See käivitab Profileri, mille filtrid on juba konfigureeritud jäädvustama ainult selle seansi tegevust. Näete täidetud lausete täielikku järjestust, ajastusteavet ja veateateid – üksikasju, mida tegevuste monitor ei paku.
Et rohkem teada SQL Server Profileerimisvõimaluste ja täiustatud jälgimistehnikate kohta vaadake meie terviklik SQL Server Profileerija juhend.
7.3.2 Täiendamine laiendatud sündmustega
Laiendatud sündmuste funktsioon pakub vähese üldkuluga ja detailset jälgimist, mis jäädvustab teavet, mida tegevuste monitor ei leia. Looge laiendatud sündmuste seansse, et jälgida konkreetseid sündmusi, nagu ummikseisud, pikaleveninud päringud või liigsed rekompileerimised.
Kasutage koheseks uurimiseks tegevuste monitori ja pidevaks jälgimiseks ning ajalooliseks analüüsiks laiendatud sündmusi. Need kaks tööriista vastavad erinevatele vajadustele.
Et rohkem teada SQL Server Laiendatud sündmuste võimalused ja täiustatud jälgimistehnikad leiate meie terviklik SQL Server Laiendatud sündmuste juhend.
7.3.3 Kolmandate osapoolte jälgimislahendused
Kommertstööriistad nagu SolarWindsi andmebaasi jõudluse analüsaator, Redgate SQL Monitor ja Quest Spotlight pakuvad funktsioone, mis Activity Monitoril puuduvad: märguanded, ajaloolised trendid, mahutavuse planeerimine ja automatiseeritud diagnostika.
Need tööriistad on väärtuslikud täiendused Activity Monitorile, mitte selle asendajad. Activity Monitor on kasulik kiirete kontrollide ja uurimiste jaoks isegi siis, kui saadaval on keerukad jälgimisvahendid.
7.4 levinumat viga, mida vältida
Levinud Activity Monitori vigade mõistmine aitab teil seda tõhusamalt kasutada.
7.4.1 Aktiivsusmonitori pidevalt tööle jätmine
Kõige levinum viga on tegevuse jälgimise avamine ja selle määramata ajaks tööle jätmine. See raiskab serveriressursse ja pakub vähe väärtust, kuna te ei jälgi aktiivselt.
Sulgege tegevuste monitor, kui te seda aktiivselt ei kasuta. Kui vajate pidevat jälgimist, rakendage hoopis korralik jälgimislahendus ajastatud andmete kogumisega.
7.4.2 Liigne lootmine ainult aktiivsusmonitorile
Tegevusmonitor pakub serveri tervise kohta ühe vaatenurga. Ärge lootke ainult sellele. Täiendage seda operatsioonisüsteemi tasemel mõõdikute jaoks Windows Performance Monitoriga, üksikasjaliku jälgimise jaoks laiendatud sündmustega ja päringute häälestamiseks täitmisplaani analüüsiga.
Aktiivsusmonitor aitab probleeme tuvastada, kuid nende lahendamine nõuab sageli lisatööriistu ja põhjalikumat analüüsi.
Lisateave SQL Server jõudlusmonitor meie täielik teejuht.
7.4.3 Ajalooliste suundumuste ignoreerimine
Aktiivsusmonitor näitab praegust olekut, kuid jõudlusprobleemidel on sageli aja jooksul nähtavad mustrid. Rakenda ajalooliste andmete kogumist, et saaksid võrrelda praeguseid mõõdikuid algtasemetega ja tuvastada trende.
Ilma ajaloolise kontekstita ei pruugi te märgata, et tänane „normaalne” protsessori kasutus on 30% kõrgem kui eelmise kuu baasväärtus, mis viitab järkjärgulisele halvenemisele.
8. Aktiivsusmonitori probleemide tõrkeotsing
Aktiivsusmonitoril endal esineb vahel probleeme. Nende probleemide tõrkeotsingu teadmine aitab vältida pettumust.
8.1 Aktiivsusmonitor ei avane või ei kuva andmeid
Kui Aktiivsusmonitor avaneb, aga kuvab tühje paane või ei avane üldse, võib sellel olla mitu põhjust.
8.1.1 Lubadega seotud probleemid
Aktiivsusmonitori probleemide kõige levinum põhjus on ebapiisavad õigused. Kontrollimiseks ja lahendamiseks tehke järgmist.
- Kontrollige oma serveritasandi õigusi:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Kui ühtegi rida ei tagastata, puudub teil serveri oleku vaatamise õigus.
- Paluge serveri administraatoril see lubada:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - Pärast lubade andmist sulgege ja avage uuesti tegevuste monitor.
8.1.2 Versioonide ühilduvuse probleemid
Kasutades vana versiooni SQL Server Management Studio uuemaga ühenduse loomiseks SQL Server versioon võib põhjustada tegevuste monitori tõrkeid. Tööriist ei pruugi uusi ootetüüpe ega süsteemivaate veerge mõista.
Kasutage alati SSMS-i versiooni, mis on teie omaga sama või uuem. SQL Server versioon. Microsoft pakub uusimat SSMS-i tasuta allalaadimiseks eraldi SQL Server ise.
8.1.3 Tulemüüri ja võrguprobleemid
Aktiivsusmonitori jaoks on vaja ühendust SQL Server eksemplar standardsete portide kaudu (vaikimisi 1433). Kui saate Object Exploreri kaudu ühenduse luua, kuid tegevuste monitor ei tööta, võivad tulemüüri reeglid teatud ühendusi blokeerida.
Veenduge, et teie klient pääseb ligi SQL Server masin kõigil vajalikel portidel. Kontrollige nii Windowsi tulemüüri kui ka kõiki kliendi ja serveri vahelisi võrgu tulemüüre.
8.2 Aktiivsusmonitor püsivalt peatatud
Levinud probleem, eriti SQL Server 2019. aastal avaneb tegevuste monitor peatatud olekus ja keeldub jätkamast.
8.2.1 Pausiseisundi mõistmine
Kui aktiivsuse monitor peatab töö, kuvatakse kõigil paanidel olekut „Peatatud“ ja jätkamisnuppu, mis ei pruugi töötada. See takistab teil serveritegevuse nägemist.
Peatatud olek tekib tavaliselt pigem lubade probleemide, kaugühenduse piirangute või SSMS-i versioonivigade tõttu kui tahtliku peatamistoimingu tõttu.
8.2.2 Levinud põhjused
Aktiivsusmonitor võib jäädavalt peatatud olekusse minna järgmistel põhjustel:
- Hiljuti lisatud uuematel paanidel puudub VIEW SERVER STATE luba. SQL Server versioonid
- Kaugühendused on seadmes keelatud SQL Server Näiteks
- Autentimisvead teatud süsteemipäringute puhul
- Vead teatud SSMS-i järkudes, eriti versioonides 18.0 kuni 18.3
- Kliendi ja serveri vahelised ühenduvusprobleemid
8.2.3 Lahenduse etapid
Aktiivsusmonitori peatatud oleku probleemide lahendamiseks tehke järgmist.
- SSMS-i värskendamine: Laadige alla ja installige uusim SQL Server Management Studio versioon Microsofti veebisaidilt. Paljud pausil oleva oleku vead parandati hilisemates versioonides.
- Kontrollige õigusi: Veenduge, et teil on serveri oleku vaatamise ja mis tahes definitsiooni vaatamise õigused.
- Kontrollige kaugühendusi: Veenduge, et SQL Server eksemplar lubab kaugühendusi:
EXEC sp_configure 'remote access';Kui väärtus on 0, paluge administraatoril see lubada.
- Taaskäivitage SSMS: Mõnikord lihtsalt sulge kõik aknad ja taaskäivita SQL Server Management Studio lahendab probleemi.
- Ühenduse loomine Windowsi autentimisega: SQL-autentimise kasutamisel proovige hoopis Windowsi autentimist, kuna see möödub mõnikord autentimisega seotud pausiprobleemidest.
8.3 Jõudlusprobleemid aktiivsuse monitori kasutamisel
Kui tegevuste jälgimine ise muutub aeglaseks või põhjustab serveri jõudluse halvenemist, on vaja midagi ette võtta.
8.3.1 Jälgimiskulude vähendamine
Aktiivsusmonitori mõju minimeerimiseks toimige järgmiselt.
- Suurenda värskendamise intervalli 30 sekundi või 1 minutini.
- Sulgege paanid, mida te aktiivselt ei kasuta, klõpsates ahendamisnupul.
- Kui paanid on ahendatud, ei päri tegevuste monitor nende kohta andmeid.
- Vältige mitme Activity Monitori eksemplari samaaegset käitamist.
- Sulgege tegevuste monitor täielikult, kui te probleeme aktiivselt ei uuri.
8.3.2 Alternatiivsed kergekaalulised seiremeetodid
Kui Activity Monitor on teie keskkonna jaoks liiga ressursimahukas, kaaluge alternatiive:
- Päringu esitamine otse DMV-dele: Kirjutage spetsiifilisi T-SQL päringuid, mis toovad välja ainult vajaliku teabe.
- Kasuta sp_WhoIsActive: See salvestatud protseduur on väga optimeeritud ja sellel on tavaliselt väiksem üldkulu kui Activity Monitoril.
- Rakenda valimvõtmist: Planeerige SQL-agendi töid, mis jäädvustavad DMV-andmete hetktõmmiseid regulaarsete intervallidega ja salvestavad tulemused tabelitesse hilisemaks analüüsiks.
- Teiseste koopiate jälgimine: In Alati sisse lülitatud kättesaadavusrühmad, käivitage tegevuste monitor loetava teisejärgulise, mitte peamise vastu.
8.4 Ebatäpne või puuduv teave
Mõnikord kuvab Aktiivsusmonitor teavet, mis tundub vale või mittetäielik.
8.4.1 Andmete kontrollimine sõidukite maandusjuhtide abil
Kui tegevuste monitori tulemused tunduvad kahtlased, kontrollige neid, pärides otse aluseks olevaid DMV-sid. Näiteks kui protsesside paan ei kuva blokeerimist, kuid kasutajad teatavad sellest, pärige:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Kui see päring näitab blokeerimist, mille Aktiivsusmonitor vahele jättis, olete kinnitanud kuvamisprobleemi.
8.4.2 Andmete värskendamise ajastuse mõistmine
Pea meeles, et tegevuste monitor kuvab hetktõmmiseid. Päring, mis käivitati värskendusintervallide vahel, ei ilmu hiljutiste kallite päringute hulka, kui selle täitmisplaan ei jää vahemällu.
Samamoodi kajastab ressursi ooteaegade paanil olev ootestatistika viimasest hetktõmmisest saadik kogunenud andmeid. Kiiresti muutuvad töökoormused võivad iga värskendamise ajal kuvada erinevaid mustreid.
9. Täiustatud aktiivsuse jälgimise tehnikad
Kogenud andmebaasiadministraatorid kasutavad aktiivsuse monitori keerukatel viisidel, et saada maksimaalset diagnostilist väärtust.
9.1 Mitme paani kombineerimine algpõhjuse analüüsiks
Aktiivsusmonitori tõeline jõud ilmneb siis, kui keeruliste jõudlusprobleemide mõistmiseks korreleerite teavet mitmel paanil.
9.1.1 Ooteaegade seostamine protsessidega
Kui ressursi ooteaegade paanil kuvatakse kategoorias pikki ooteaegu, kasutage protsesside paani, et tuvastada, millised seansid neid ooteaegu kogevad:
- Pane tähele ootekategooriat, millel on pikk kumulatiivne ooteaeg (nt „Lukustus”).
- Lülitu protsesside paanile.
- Sorteeri Ootetüüp seansside grupeerimiseks nende praeguse ooteaja järgi.
- Otsige seansse, mis kuvavad probleemse kategooria ootetüüpe.
- Nende seansside puhul uurige Oota ressurss veergu, et näha, millised andmebaasiobjektid on kaasatud.
- Paremklõpsake ja valige Detailid päringu teksti nägemiseks.
See korrelatsioon aitab teil liikuda olukorrast „meil on lukustusooteajad” olukorrani „see konkreetne päring ootab selle tabeli lukke”.
9.1.2 Kallite päringute sidumine sisend-/väljundprobleemidega
Kui andmefaili sisend-/väljundpaan näitab konkreetse andmebaasi suurt kettaaktiivsust:
- Pange tähele, millistel andmebaasifailidel on kõrge MB/s lugemis- või kirjutamiskiirus.
- Lülitu hiljutiste kallite päringute juurde.
- Sorteeri Füüsiline lugemine sekundis et tuvastada päringuid, mis loevad kettalt palju.
- Filtreeri või tuvasta visuaalselt andmebaasis töötavaid päringuid, millel on suur sisend-/väljundvõimsus.
- Uurige nende päringute täitmisplaane tabelite skannimiste või puuduvate indeksite suhtes, mis põhjustavad liigset sisend-/väljundvõimsust.
See mitme paani analüüs seob sümptomeid (suur ketta sisend-/väljundkoormus) põhjustega (teatud ebaefektiivsed päringud).
9.2 Tegevusmonitori kasutamine mahutavuse planeerimiseks
Kuigi tegevuste monitor ei salvesta ajaloolisi andmeid, saab seda strateegiliselt kasutada mahutavuse planeerimise vaatluste jaoks.
9.2.1 Tippkasutuse mustrite tuvastamine
Jälgige serveri aktiivsust erinevatel kellaaegadel, et tuvastada kasutusmustreid:
- Avage tegevuste monitor teadaolevatel tipptundidel.
- Pange tähele graafiku % protsessori aeg tippväärtusi.
- Salvesta maksimaalne ooteülesannete arv.
- Jälgige tipptundidel partiitaotluste arvu sekundis.
- Dokumenteerige kõige tihedamini kasutatavad andmebaasid protsesside paanil.
- Võrdluseks korrake seda väljaspool tipptundi.
Kui tipptunni protsessori aeg pidevalt ületab 80%, lähenete protsessori võimsuse piirile. Samamoodi näitab ooteaegade suurenemine ressursikonkurentsi kasvu.
9.2.2 Ressursside trendide analüüs
Kuigi tegevuste monitor näitab praegust olekut, saate seda kasutada trendide pisteliseks kontrollimiseks, salvestades peamisi näitajaid aja jooksul:
- Tehke ülevaatepaanist ekraanipilte iga päev samal kellaajal
- Salvestage iga graafiku tippväärtused
- Võrdle nädalate kaupa, et tuvastada kasvutrende
- Jälgige protsessori keskmise aja või sisend-/väljundkiiruse järkjärgulist suurenemist
See käsitsi trendide koostamine täiendab keerukamaid jälgimislahendusi ja aitab põhjendada võimsuse laiendamist.
9.3 Toimivusbaaside dokumenteerimine
Baasnäitajate kehtestamine aitab teil tuvastada, millal jõudlus halveneb.
9.3.1 Baasnäitajate jäädvustamine
Hea jõudluse perioodidel dokumenteerige tegevuste monitori mõõdikud:
- Avage tegevuste monitor tavapärase äritegevuse ajal (mitte tipptunnil ega väljaspool tipptundi).
- Kirje ülevaate paani väärtused:
- Tüüpiline protsessori ajavahemik (%)
- Keskmine ooteülesannete arv
- Tavaline andmebaasi sisend-/väljundkiirus
- Tüüpiline partiitaotluste arv sekundis
- Pange tähele ressursi ooteaegade paani kategooriaid, mis näitavad kõige rohkem ooteaega.
- Dokumenteerige aktiivsete protsesside arv, mis tavaliselt kuvatakse protsesside paanil.
- Salvesta hiljutiste kallite päringute tüüpilised päringu täitmise mõõdikud.
Säilitage see baasdokumentatsioon edaspidiseks kasutamiseks jõudlusprobleemide uurimisel.
9.3.2 Praeguse ja baastaseme jõudluse võrdlus
Jõudlusprobleemide ilmnemisel võrrelge praeguseid aktiivsuse monitori näitu oma dokumenteeritud algtasemega:
- Kas protsessori aeg on oluliselt pikem kui baasaeg? Keskenduge protsessorimahukatele päringutele.
- Kas ooteajad on 2-3 korda suuremad kui baastasemed? Uurige ressursside ooteaegu.
- Kas sisend/väljund on oluliselt suurem? Kontrollige andmefaili sisend-/väljundpaani ja kalleid päringuid.
- Kas partiitaotluste arv on tipptundidel baastasemest madalam? Otsige blokeerimise või ühenduvuse probleeme.
See võrdlus aitab teil tuvastada, mis on muutunud, ja suunata tõrkeotsingu jõupingutused asjakohaselt.
9.4 Kohandatud jälgimisvoogude loomine
Töötage välja süstemaatilised töövood levinud uurimisstsenaariumide jaoks, et tagada põhjalik ja korduv analüüs.
9.4.1 Samm-sammult uurimisprotsess
Kui kasutajad teatavad jõudlusprobleemidest, järgige järjepidevat töövoogu:
- Kiire tervisekontroll: Avage tegevuste monitor ja skannige ülevaatepaani graafikuid ilmsete anomaaliate suhtes.
- Kontrollige blokeerimist: Laienda protsesside paani ja filtreeri veerus „Blokeerija” välja „NonBlanks”.
- Ressursivaidluse tuvastamine: Ressursi ooteaegade ülevaate paan, mis on sorteeritud ooteaja järgi.
- Leia kalleid päringuid: Uurige hiljutisi kulukaid päringuid, mis on sorteeritud protsessori, seejärel täitmiste ja seejärel lugemiste järgi.
- Korreleerige I/O mustreid: Ristviited kallitele päringutele andmefaili sisend-/väljundpaani tegevuste abil.
- Dokumendi leiud: Tehke ekraanipilte ja salvestage asjakohased seansi ID-d, ootetüübid ja päringu üksikasjad.
- Sügav sukeldumine: Kasutage tuvastatud probleemide üksikasjalikuks uurimiseks Profileri jälgi, täitmisplaani analüüsi ja DMV päringuid.
9.4.2 Eskalatsioonikriteeriumid
Määrake kriteeriumid probleemide eskaleerimiseks ja uurimise jätkamiseks:
- Eskaleerige kohe: Blokeerimisahelad kestavad üle 5 minuti, protsessori aeg 100% juures üle 2 minuti, kriitilised süsteemiprotsessid näitavad PEATATUD olekut.
- Eskaleerumine analüüsiga: Korduvad kallid päringud, mis tarbivad üle 50% protsessori võimsusest, pidevalt kõrged sisend-/väljundvastuse ajad > 50 ms, mälutoetuste korduvad nurjumised.
- Uuri lähemalt: Ajutised ooteajad, mis lahenevad minutite jooksul, päringud mitteoptimaalsete plaanidega, kuid vastuvõetava jõudlusega, väiksemad blokeerimised kestusega <30 sekundit.
10. Aktiivsusmonitor erinevates SQL Server Variandid
Aktiivsusmonitor on arenenud läbi SQL Server versioonid, kusjuures iga väljalase toob kaasa täiustusi ja aeg-ajalt ka uusi probleeme.
10.1 Aktiivsusmonitor sisse SQL Server 2008 ja hiljem
SQL Server 2008. aastal tutvustati moodsat Activity Monitori disaini, mis on tänaseni suures osas muutmata.
10.1.1 Uued funktsioonid, mis on lisatud SQL Server 2008
. SQL Server 2008. aasta Aktiivsusmonitori ümberkujundamine tõi kaasa olulisi täiustusi:
- Graafiline armatuurlaud reaalajas diagrammidega ülevaatepaanil
- Laiendatav/kokkupandav paaniliides, mis asendab vana ainult ruudustikul põhinevat vaadet
- Hiljutiste kallite päringute paan, mis kuvab päringu koondtulemusi
- Andmefaili I/O paan failipõhise kettategevuse jälgimiseks
- Täiustatud ressursi ooteaegade paan koos ootekategooriatega
- Paremklõpsu kontekstimenüüd protsessi toimingute jaoks, näiteks seansside lõpetamine ja Profileri käivitamine
- Konfigureeritavad värskendusintervallid 1 sekundist 1 tunnini
Need muudatused muutsid Activity Monitori lihtsast protsesside loendist terviklikuks jälgimise armatuurlauaks.
10.1.2 Muudatused võrreldes SQL Server 2005
SQL Server 2005. aasta aktiivsuse monitor oli palju piiratum:
- Ligipääs Object Exploreri halduskausta, mitte tööriistariba kaudu
- Üksik ruudustik, mis kuvab protsesside loendit koos põhiteabega
- Graafilisi diagramme ega mitut paani pole
- Ei mingeid kalleid päringuid ega sisend-/väljundjälgimist
- Piiratud ooteaja statistika teave
2008. aasta ümberkujundamine kujutas endast pigem täielikku ümbermõtlemist kui järkjärgulist täiustamist.
10.2 Aktiivsusmonitor sisse SQL Server 2014/2016
SQL Server 2014. ja 2016. aastal tehti Activity Monitori alusandmete kogumise osas järkjärgulisi täiustusi, kuid visuaalseid muudatusi oli vähe.
10.2.1 Täiustused ja täiendused
Nende versioonide peamised täiustused olid järgmised:
- Parem jõudlus tuhandete vahemällu salvestatud plaanidega serverite jälgimisel
- Täiustatud filtreerimisvõimalused protsesside paanil
- Ooteaja statistika koondamise täpsuse parandamine
- Veergude sortimise ja filtreerimise parem käsitlemine suurte tulemuskogumite korral
- Tõhusamad DMV päringud vähendavad jälgimiskulusid
Põhiliides jäi samaks SQL Server 2008, säilitades administraatoritele tuttavlikkuse.
10.3 Aktiivsusmonitor sisse SQL Server 2019/2022
hiljutine SQL Server versioonid jätkavad Activity Monitori arengut, keskendudes jõudlusele ja stabiilsusele.
10.3.1 Uusimad funktsioonid ja võimalused
SQL Server 2019. ja 2022. aasta tegevusmonitor sisaldab:
- Nendes versioonides kasutusele võetud uute ootetüüpide tugi
- Täiustatud renderdusjõudlus SSMS-is WPF-tehnoloogia abil
- Suure hulga aktiivsete seansside parem käsitlemine
- Täiustatud ühilduvus pilve SQL-platvormidega
- Täpsemad protsessori ja sisend-/väljundnäitajad
10.3.2 Teadaolevad probleemid uuemates versioonides
SQL Server 2019. aastal toodi turule mitu Activity Monitori viga:
- Püsiv peatatud olek: Aktiivsusmonitor läheb sageli peatatud olekusse ega jätka tööd, eriti SSMS 18.0-18.3 versioonides. Parandatud SSMS-i hilisemates versioonides.
- Kaugühenduse tõrked: Mõned konfiguratsioonid takistavad Activity Monitori avamist kaugtöölaua eksemplarides. Lahenduste hulka kuuluvad teatud jälgimislippude lubamine või uuemate SSMS-i järkude kasutamine.
- Lubade probleemid: Uued süsteemivaated nõuavad lisaõigusi, mida pole selgelt dokumenteeritud, mistõttu kuvatakse tühje kuvasid isegi siis, kui kuvatakse serveri oleku vaade.
Kasutage töötamisel alati uusimat SSMS-i versiooni SQL Server 2019 ja 2022, et neid probleeme vältida.
11. Praktilised kasutusjuhud ja näited
Reaalsed näited demonstreerivad, kuidas Activity Monitori tõhusalt tavalistes tõrkeotsingu stsenaariumides rakendada.
11.1 Juhtumiuuring: aeglase veebirakenduse diagnoosimine
Arendusmeeskond teatab, et nende veebirakendus on muutunud vastuvõetamatult aeglaseks, lehtede laadimine võtab tavapärase 2-3 sekundi asemel 20-30 sekundit.
11.1.1 Esialgne uurimine ülevaatepaaniga
Avage tegevuste monitor ja uurige ülevaatepaani:
- Protsessori aja graafik näitab 85–95% protsessori kasutust, mis on oluliselt kõrgem kui tavaline 30–40% baasväärtus.
- Ootel olevate ülesannete arv kõigub 10–20 ülesande vahel, võrreldes tavalise algtasemega 0–3.
- Andmebaasi sisend/väljund näitab mõõdukat aktiivsust umbes 50 MB/s.
- Paketttaotluste arv sekundis on oodatust madalam, ulatudes 100-ni sekundis, võrreldes tüüpilise 300–400-ga sekundis tööajal.
See muster viitab protsessori kitsaskohale, mille puhul ressursikonkurents põhjustab läbilaskevõime vähenemist. Server töötab kõvasti, kuid ei töötle palju päringuid.
11.1.2 Probleemse päringu tuvastamine
Laiendage paani „Hiljutised kallid päringud” ja sorteerige täitmiste arvu minutis järgi:
- Kõige populaarsem päring näitab 15 000 täitmist minutis.
- Paremklõpsake ja valige Päringu teksti muutmine päringut uurima.
- Päring on lihtne SELECT-lause, mis otsib ühe kasutajakirje:
SELECT * FROM Users WHERE UserId = @UserId. - Tavapärase rakenduse kasutamise korral ei tohiks see päring käivituda 15 000 korda minutis.
Paremklõpsake päringut ja valige Näita teostusplaaniPlaan kuvab kasutajate tabeli skannimist koos hoiatusega puuduva indeksi kohta kasutaja ID veerus.
Filtreeri protsesside paani rakenduse järgi, et kuvada ainult veebirakenduse ühendused. Mitme seansi korral kuvatakse sama päringut korduvalt.
11.1.3 Lahendamine ja kontrollimine
Probleem tuleneb kahest asjaolust: päringute liigsest täitmisest ja puuduvast indeksist. Lahendamise sammud:
- Loo puuduv indeks:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Võtke ühendust arendusmeeskonnaga liigsete täitmiste kohta. Uurimine paljastab rakenduskoodis N+1 päringuprobleemi, kus tsükkel hangib iga loendi üksuse kohta kasutajaandmeid.
- Muuda rakendust kasutajaotsinguid IN-klausli või tabeliväärtusega parameetri abil ühte päringusse koondada.
- Kontrollige parandust jälgides pärast juurutamist tegevuste monitori. Protsessori kasutus langeb 35–40%-ni, täitmiste arv minutis väheneb 200–300-ni ja rakenduste reageerimisajad normaliseeruvad.
11.2 Juhtumiuuring: blokeerimisprobleemi lahendamine
Kasutajad teatavad, et tellimuste sisestamise süsteem hangub perioodiliselt 30–60 sekundiks enne normaalse töö jätkamist.
11.2.1 Blokeerimisahela tuvastamine
Avage ühe järgmise külmumissündmuse ajal tegevuste monitor ja laiendage paani Protsessid:
- Sorteeri Seansi ID et näha kõiki korraldatud seansse.
- Mitme seansi väärtused kuvatakse Blokeeritud veerg, mis kõik osutavad seansi ID-le 73.
- Sessioon 73 näitab '1' Pea blokeerija veerg, mis kinnitab, et see on algpõhjus.
- . Ootetüüp Blokeeritud seansside puhul kuvatakse LCK_M_X, mis näitab, et nad ootavad eksklusiivseid lukke.
- . Oota ressurss veerg näitab, et blokeering on tabelis Tellimused.
11.2.2 Põhjuse analüüsimine
Paremklõpsake seansil 73 ja valige Detailid käsu vaatamiseks:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
See värskendus on osa partiitöötlustööst, mis töötab iga tund. Kontrollimine Logi sisse veerg kinnitab, et seanss kuulub pakktöötlusteenuse kontole.
Päring hoiab tuhandete tellimuste töötlemise ajal tabelis tellimusi lukus. Ooteaeg blokeeritud seansside arv suureneb pidevalt, mis kinnitab, et probleem on selles pikalt kestnud toimingus.
11.2.3 Paranduse rakendamine
Lühiajaline lahendus:
- Dokumenteerige seansi 73 üksikasjad, sh päringu tekst ja kestus.
- Laske värskendusel loomulikult lõpule viia, kuna see on seaduslik partiitöötlus.
- Pärast lõpetamist veenduge, et blokeeritud seansid on kustutatud ja normaalne töö jätkub.
Rakendatud pikaajalised lahendused:
- Pakktöö ümberplaneerimine töötama väljaspool tipptundi (kell 2–4 hommikul, mitte tööajal).
- Pakktöötluse muutmine tellimuste värskendamiseks väiksemates, 100 kirjet sisaldavates partiides korraga, vabastades partiide vahel lukke.
- Lisa indeks veerus OrderId, et kiirendada värskendamise toimingut.
- Kaaluge SNAPSHOTi eraldamist lugemistoimingute jaoks blokeeriva mõju vähendamiseks.
11.3 Juhtumiuuring: liigsete päringute täitmiste tuvastamine
Andmebaasi jälgimine näitab, et protsessori kasutus on viimase kuu jooksul järk-järgult suurenenud, kuid rakenduse koodis pole ilmseid muutusi toimunud.
11.3.1 Ebanormaalsete soorituste arvu tuvastamine
Avage tegevuste monitor ja uurige paani Hiljutised kallid päringud:
- Sorteeri Täitmisi minutis , et näha kõige sagedamini teostatud päringuid.
- Kõige populaarsem päring näitab 37 000 täitmist minutis – see on palju rohkem kui ükski teine päring.
- Paremklõpsake ja valige Päringu teksti muutmine.
- Päring hangib tootekategooria teabe:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - See lihtne päring peaks olema kiire ja vahemällu salvestatav, kuid seda täidetakse kümneid tuhandeid kordi minutis.
11.3.2 Rakenduskoodi jälgimine
Protsesside paanil leidke seansid, mis seda päringut täidavad:
- Pange tähele taotlus veerus kuvatakse „ProductCatalogService”.
- Paremklõpsake ühel neist seanssidest ja valige Jälgimisprotsess sees SQL Server Profiler.
- SQL Profiler näitab, et päringut käivitatakse korduvalt kiirelt järjest erinevate CategoryId väärtustega.
- Koodi ülevaatamiseks võtke ühendust ProductCatalogService'i haldava arendusmeeskonnaga.
Koodiülevaade paljastab probleemi: hiljutine muudatus hangib tooteloendid koos kategooriatega. Iga tulemuse komplekti kuuluva toote (sageli üle 1,000 toote) kohta teeb kood kategooriateabe hankimiseks eraldi andmebaasipäringu – klassikaline N+1 päringuprobleem.
11.3.3 Rakenduse optimeerimine
Rakendage õige parandus:
- Rakenduse päringu muutmine JOIN-käsu kasutamiseks toodete ja nende kategooriate otsimiseks ühes andmebaasikutses:
SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE p.Active = 1; - Juuruta uuendatud kood ja jälgige aktiivsuse monitori.
- Kontrollige parandust: Kategooriapäringu täitmiste arv minutis langeb 37 000-lt alla 100-ni ja protsessori üldine kasutus väheneb 40%.
- Dokumenteeri õpitud õppetund ja jagage seda arendusmeeskonnaga, et vältida sarnaseid probleeme tulevaste koodimuudatuste korral.
12. Tuvastage võimalik andmebaasi rikkumine
Kuigi tegevuste monitor ei ole spetsiaalselt loodud andmebaasi korruptsiooni tuvastamiseks, võivad teatud mustrid selle kuval viidata varjatud korruptsiooniprobleemidele, mis vajavad edasist uurimist.
12.1 Andmebaasi võimaliku rikkumise sümptomid
Kui andmebaas on rikutud ja sellele juurde pääsetakse, võite aeg-ajalt näha järgmist:
1. Protsesside paanil:
- Seansid on peatatud olekus ja ebatavaliste ooteaegadega
- Veaolekuid näitavad protsessid
- Päringud ebaõnnestuvad korduvalt
2. Ressursi ooteaegade paanil:
- Ebatavalised I/O-ga seotud ootetüübid, mis võivad viidata kettaprobleemidele (kuigi see viitab pigem riistvaraprobleemidele kui loogilisele korruptsioonile)
3. Hiljutistes kallites päringutes:
- Ebanormaalselt kõrge füüsilise lugemise arvuga päringud, kui nad korduvalt üritavad lugeda rikutud lehti
12.2 Edasine kontroll DBCC CHECKDB abil
Kui tegevuste monitor kuvab sümptomeid, mis viitavad võimalikule rikkumisele, peaksite andmebaasi terviklikkuse kontrollimiseks viivitamatult käivitama käsu DBCC CHECKDB. See käsk skannib kõiki andmebaasi lehti, valideerib kontrollsummasid ja kontrollib loogilise järjepidevuse vigu.
Lisateavet DBCC CHECKDB kasutamise kohta andmebaasi vigade kontrollimiseks ja parandamiseks leiate meie põhjalik DBCC CHECKDB juhend.
12.3 Remont professionaalsete tööriistadega
Kui DBCC CHECKDB kinnitab andmebaasi korruptsiooni, on teil mitu parandamisvõimalust:
- Eelistatud lähenemisviis on taastamine teadaolevalt toimivast varukoopiast. Vt. meie põhjalik juhend varundamise ja taastamise kohta SQL Server andmebaasid.
- Väiksemate vigade korral võib probleeme lahendada DBCC CHECKDB koos REPAIR_REBUILD-iga.
- Kriitiliste andmebaaside puhul, millel pole hiljutisi varukoopiaid, professionaalne SQL-i taastamise tarkvara ja teenused suudavad sageli taastada andmeid, mida sisseehitatud parandusvõimalused ei suuda.
13. järeldus
SQL Server Tegevusmonitor on andmebaasi administraatoritele hindamatu tööriist, mis annab kohese ülevaate serveri jõudlusest ning aitab probleeme kiiresti ja tõhusalt diagnoosida.
13.1 Põhipunktide kokkuvõte
Selles juhendis oleme uurinud, kuidas Aktiivsusmonitor aitab teil mõista ja tõrkeotsingut teha SQL Server jõudlus:
- Tegevuste jälgimine pakub reaalajas nähtavust protsesside, ooteaegade, päringute ja sisend-/väljundandmete kohta organiseeritud graafilise liidese kaudu.
- Viis paani – Ülevaade, Protsessid, Ressursside ooteajad, Andmefailide sisend/väljund ja Hiljutised kallid päringud – pakuvad igaüks serveritegevuse kohta ainulaadset vaatenurka.
- Levinud tõrkeotsingu stsenaariumid, nagu päringute liigne täitmine, ahelate blokeerimine ja suur protsessori kasutus, muutuvad süstemaatilise tegevusmonitori uurimise abil hallatavaks.
- Kuigi tegevuste monitor on võimas, on sellel piirangud, sealhulgas ajalooliste andmete puudumine, ootetüübi rühmitamine ja jälgimise üldkulud, mis mõjutavad selle rakendatavust.
- Aktiivsusmonitori täiendamine DMV päringute, sp_WhoIsActive'i, laiendatud sündmuste ja potentsiaalselt ka kolmandate osapoolte tööriistadega loob tervikliku jälgimisstrateegia.
- Värskendusintervallide parimate tavade järgimine, tegevuste monitori mittekasutamise ajal sulgemine ja mitme paani kombineerimine korrelatsiooniks maksimeerib selle väärtust, minimeerides samal ajal selle mõju.
13.2 Aktiivsusmonitor teie tööriistakomplekti osana
Tegevusmonitor peaks olema teie esmane reageerimisvahend jõudlusuuringute puhul, mitte ainus tööriist. Selle tugevus seisneb kohese nähtavuse pakkumises aktiivse tõrkeotsingu ajal, aidates teil kiiresti kindlaks teha, kas andmebaas on pudelikaelaks, ja tuvastada konkreetsed aspektid, mis vajavad põhjalikumat uurimist.
Mõtle Aktiivsusmonitorist kui auto armatuurlaua analoogist – see annab sulle kohe teada, kui midagi on valesti, ja aitab sul tuvastada üldise probleemse valdkonna. Nii nagu auto armatuurlaud ei ütle sulle täpselt, miks mootori kontrolltuli põlema läks, suunab Aktiivsusmonitor sind probleemidele, paljastamata alati nende täielikku algpõhjust. See sügavam analüüs nõuab lisatööriistu ja oskusteavet.
Integreerige tegevuste monitor laiemasse tööriistakomplekti, mis hõlmab täitmisplaani analüüsi, ooteaja statistika jälgimist, ajaloolisi jälgimislahendusi ja jõudluse parimaid tavasid. Kasutage seda koos sobivate indekseerimisstrateegiate, päringute optimeerimise tehnikate ja mahutavuse planeerimisega.
13.3 Õppeteekonna jätkamine
Andmebaaside administraatoriks saamise teel on Activity Monitori valdamine vaid üks samm. Jätka oma oskuste täiendamist järgmiselt:
- Õppimine tõlgendama teostusplaane ja tuvastama ebaefektiivseid toiminguid
- Mõistmise SQL Server ooteaja statistika ja selle mõju
- Indeksi kujundamise ja optimeerimise tehnikate uurimine
- Avastades SQL Serverarhitektuur ja päringute töötlemine
- Süstemaatiliste tõrkeotsingu metoodikate harjutamine
- Kogemuste loomine laiendatud sündmustega detailse jälgimise jaoks
- Tehingute isolatsiooni tasemete ja nende jõudlusele mõju mõistmine
Iga tegevuste jälgimise abil tehtud tulemuslikkuse uuring õpetab sulle midagi uut selle kohta, kuidas SQL Server toimib ja kuidas rakendused andmebaasidega suhtlevad. Dokumenteerige oma leiud, jagage teadmisi kolleegidega ja looge lahenduste kogu levinud probleemidele.
13.4 Täiendavad ressursid
Laienda oma teadmisi nende väärtuslike ressurssidega:
- Avage aktiivsusmonitor SQL Server Juhtimisstuudio (SSMS)
: Ametlik SQL Server dokumentatsioon aktiivsuse monitori avamise kohta SQL Server Haldusstuudio (SSMS).
- Activity Monitor
Ametlik SQL Server dokument aktiivsuse monitori kasutamise kohta.
14. Korduma kippuvad küsimused (KKK)
K: Mis on SQL Server Tegevusmonitor?
A: SQL Server Aktiivsusmonitor on sisseehitatud tööriist SQL Server Management Studio, mis kuvab reaalajas teavet serveris töötavate protsesside kohta SQL Server eksemplari ja nende mõju serveri ressurssidele. See pakub graafilist armatuurlauda viie paaniga, mis näitavad serveri tegevuse erinevaid aspekte, sealhulgas protsessori kasutust, ooteülesandeid, sisend-/väljundkiirusi, aktiivseid seansse ja kulukaid päringuid.
K: Kuidas avada SSMS-is tegevuste monitori?
A: Aktiivsusmonitori saab avada neljal viisil: (1) klõpsake SSMS-i tööriistaribal Aktiivsusmonitori ikooni, (2) paremklõpsake oma SQL Server eksemplari nimi objektide uurijas ja valige Activity Monitor, (3) Vajutage Ctrl + muu + Avõi (4) konfigureerige SSMS nii, et see käivituks automaatselt TÖÖRIISTAD -> Valikud -> keskkond -> Startup.
K: Milliseid õigusi on mul vaja Aktiivsusmonitori kasutamiseks?
V: Teil on vaja VAATA SERVERI OLEKUT luba enamiku tegevuste monitori teabe nägemiseks. Andmefaili sisend-/väljundpaani jaoks on teil vaja ka ühte järgmistest: LOO ANDMEBAAS, MUUDA MISTAHES ANDMEBAASIvõi VAATA MISTAHES MÄÄRATLUST õigused. Ilma nende õigusteta võib Aktiivsusmonitor küll avaneda, kuid kuvada tühje paane.
K: Miks on minu aktiivsuse monitor peatatud või ei tööta?
A: Tegevuste jälgimine peatub tavaliselt lubadega seotud probleemide, aegunud SSMS-i versioonide või keelatud kaugühenduste tõttu. Probleemi lahendamiseks: (1) värskendage SSMS-i uusimale versioonile, (2) veenduge, et teil on serveri oleku vaatamise luba, (3) kontrollige, et kaugühendused oleksid seadmes lubatud. SQL Server näiteks (4) taaskäivitage SSMS ja (5) proovige võimalusel luua ühendus SQL-autentimise asemel Windowsi autentimisega.
K: Mis vahe on aktiivsuse monitoril ja sp_WhoIsActive'il?
A: Activity Monitor on SSMS-i sisseehitatud graafiline tööriist, mis pakub erinevate jälgimisaspektide jaoks organiseeritud paane. sp_WhoIsActive on tasuta kogukonna loodud salvestatud protseduur, mis tagastab üksikasjaliku seansiteabe ühes tulemuste komplektis, millel on spetsiifilisemad ootetüübid, blokeerimise üksikasjad ja kohandamisvõimalused kui Activity Monitoril. Activity Monitor sobib paremini visuaalseks uurimiseks, samas kui sp_WhoIsActive paistab silma skriptitud jälgimise osas ja pakub üksikasjalikumat teavet.
K: Kas tegevuste jälgimine mõjutab serveri jõudlust?
V: Jah, Activity Monitoril on mõõdetav üldkulu, kuna see pärib süsteemi DMV-sid iga värskendusintervalli järel. Mõju suureneb madalamate värskendussageduste korral – Microsoft hoiatab, et alla 10-sekundilised intervallid võivad serveri jõudlust mõjutada. Sulgege Activity Monitor alati, kui seda aktiivselt ei kasutata, ja arvestage suure koormuse all olevate tootmisserverite puhul 30–60-sekundiliste värskendusintervallidega.
K: Kas ma saan T-SQL-i abil tegevuste monitori andmeid hankida?
V: Jah, tegevuste monitor pärib süsteemi dünaamilise halduse vaateid, näiteks sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats ja sys.dm_exec_query_stats. Saate neid DMV-sid otse T-SQL-i abil pärida, et programmiliselt samaväärset teavet hankida, võimaldades kohandatud jälgimisskripte ja automatiseeritud andmete kogumist.
K: Mis on vaikimisi värskendusintervall?
A: Vaikimisi värskendamise intervall on 10 sekundit. Seda saab muuta, paremklõpsates ülevaatepaanil suvalisel kohal ja valides Värskendusintervallja valides eelmääratletud valikute hulgast: 1 sekund, 5 sekundit, 10 sekundit, 30 sekundit, 1 minut või 1 tund. Lühemad intervallid pakuvad rohkem reaalajas vaateid, kuid suurendavad jälgimiskoormust.
K: Kuidas saan SSMS-i käivitamisel automaatselt tegevuste monitori avada?
A: Automaatse käivitamise seadistamine SSMS-i valikute kaudu: navigeerige TÖÖRIISTAD -> Valikud -> keskkond -> Startup, Seejärel valige Ava Objektihaldur ja Aktiivsusmonitor alates Käivitamisel rippmenüü. Aktiivsusmonitor avaneb automaatselt iga kord, kui loote ühenduse SSMS-i serveriga.
K: Millised on Aktiivsusmonitori piirangud?
A: Peamised piirangud on järgmised: (1) ajalooliste andmete salvestamise või trendide kuvamise võimaluste puudumine, (2) ootetüübid on rühmitatud kategooriatesse, mitte ei ole neid eraldi kuvatud, (3) mõned ootetüübid, näiteks CXPACKET, ei pruugi ilmuda, (4) ajahetke hetktõmmised võivad vahele jätta ajutisi probleeme, (5) jälgimise üldkulud võivad mõjutada hõivatud servereid, (6) ennetava jälgimise hoiatusmehhanismi puudumine ja (7) andmete koondamine mitme serveri vahel ei ole võimalik SQL Server eksemplarid. Nende vajaduste rahuldamiseks täiendage tegevuste monitori laiendatud sündmuste, andmekogumiskomplektide või kolmandate osapoolte jälgimistööriistadega.
Teave Autor
Yuan Sheng on vanem andmebaasiadministraator (DBA), kellel on üle 10 aasta kogemust SQL Server keskkonnad ja ettevõtte andmebaaside haldus. Ta on edukalt lahendanud sadu andmebaaside taastamise stsenaariume finantsteenuste, tervishoiu ja tootmisorganisatsioonides.
Yuan on spetsialiseerunud SQL Server andmebaasi taastamine, kõrge käideldavuslahendusedja jõudluse optimeerimine. Tema ulatuslik praktiline kogemus hõlmab mitme terabaidiste andmebaaside haldamist, alati sisse lülitatud kättesaadavusrühmade rakendamist ning automatiseeritud varundus- ja taastestrateegiate väljatöötamist missioonikriitiliste ärisüsteemide jaoks.
Oma tehnilise asjatundlikkuse ja praktilise lähenemise abil keskendub Yuan terviklike juhendite loomisele, mis aitavad andmebaasiadministraatoritel ja IT-spetsialistidel lahendada keerulisi probleeme SQL Server väljakutseid tõhusalt. Ta on kursis uusimate uudistega SQL Server väljalasete ja Microsofti arenevate andmebaasitehnoloogiate põhjal, testides regulaarselt taastestsenaariume, et tagada oma soovituste vastavus reaalsetele parimatele tavadele.
Kas teil on küsimusi SQL Server taastamist või vajate täiendavat andmebaasi tõrkeotsingu juhendamist? Yuan tervitab tagasisidet ja ettepanekuid nende tehniliste ressursside täiustamiseks.


















