1. Įvadas
1.1 Kas yra SQL Server Veiklos stebėjimo priemonė?
SQL Server Veiklos monitorius yra integruota diagnostikos priemonė.ostic įrankis viduje SQL Server Valdymo studija, kurioje rodoma informacija apie SQL Server procesus ir jų poveikį serverio našumui. Tai leidžia stebėti SQL Server procesus, stebėti išteklių laukimo laiką, analizuoti brangias užklausas ir stebėti įvesties/išvesties modelius – visa tai iš vienos sąsajos.
1.2 Kodėl naudoti SQL Server Veiklos stebėjimo priemonė?
Veiklos monitorius yra jūsų pirmoji gynybos linija sprendžiant našumo problemas. Jis suteikia tiesioginį matomumą apie tai, kas vyksta jūsų kompiuteryje. SQL Server egzempliorių, nereikalaujant sudėtingų T-SQL užklausų ar trečiųjų šalių įrankių.
Šis įrankis puikiai padeda greitai nustatyti dažniausiai pasitaikančias problemas, tokias kaip seansų blokavimas, daug procesoriaus apkrovų naudojantys užklausos, per didelis užklausų vykdymas ir įvesties / išvesties kliūtys. Kai vartotojai praneša, kad programa veikia lėtai arba nereaguoja, „Activity Monitor“ padeda nustatyti, ar kaltininkas yra duomenų bazės serveris.
Duomenų bazių administratoriams, kurie nedirba su SQL Server Kasdien „Activity Monitor“ siūlo lengvai prieinamą įėjimo tašką serverio veiklos supratimui. Net patyrę duomenų bazių administratoriai jį naudoja kaip savo įrankį.tarnašumo tyrimų taškas.
1.3 Veiklos monitorius, palyginti su kitais stebėjimo įrankiais
Nors „Activity Monitor“ yra vertingas įrankis, svarbu suprasti, kaip jis lyginasi su kitomis stebėjimo parinktimis:
Veiklos monitorius, palyginti su sp_WhoIsActive: „Activity Monitor“ teikia grafinę sąsają su keliais langais, o „sp_WhoIsActive“ yra išsami saugoma procedūra, kuri pateikia išsamesnę informaciją viename rezultatų rinkinyje. „sp_WhoIsActive“ rodo konkrečius laukimo tipus, kuriuos „Activity Monitor“ grupuoja, ir pateikia išsamesnę informaciją apie blokavimą.
Veiklos monitorius, palyginti su sp_who2: Tradicinė „sp_who2“ komanda rodo pagrindinę sesijos informaciją, tačiau „Activity Monitor“ siūlo dar daugiau – ji rodo laukimo statistiką, brangias užklausas ir įvesties/išvesties metriką tvarkingu, vaizdiniu formatu.
Veiklos monitorius ir trečiųjų šalių įrankiai: Komerciniai stebėjimo sprendimai, tokie kaip „SolarWinds Database Performance Analyzer“, siūlo istorinį stebėjimą, įspėjimus ir pažangią analizę, kurios trūksta „Activity Monitor“. Tačiau „Activity Monitor“ nereikalauja jokių papildomų paslaugų.ost arba montavimas.
1.4 Pagrindiniai duomenų bazių administratorių privalumai
Veiklos monitorius siūlo keletą privalumų, dėl kurių jis yra būtinas DBA įrankis:
- Nulis Cost: Kaip įmontuotas SQL Server „Management Studio“ funkcija – nereikia mokėti licencijos mokesčio ar diegimo pastangų.
- Stebėjimas realiuoju laiku: Stebėkite dabartinę serverio veiklą, kai ji vyksta, su konfigūruojamais atnaujinimo intervalais nuo 1 sekundės iki 1 valandos.
- Integruoti veiksmai: Dešiniuoju pelės mygtuku spustelėkite procesus, kad užbaigtumėte sesijas, peržiūrėtumėte užklausos informaciją arba paleistumėte SQL Server Profiliavimo pėdsakai – visa tai iš įrankio.
- Kelios perspektyvos: Serverio būklę galite stebėti iš skirtingų kampų penkiuose specializuotuose skyduose, kurių kiekvienas skirtas konkretiems našumo aspektams.
- Greitas trikčių šalinimas: Nustatykite most dažnas našumo problemas išspręsite per kelias minutes, taip sutrumpindami vidutinį jų sprendimo laiką.
- Žemas įėjimo barjeras: Norint pradėti efektyviai naudoti įrankį, nereikia jokių specialių žinių, nors gilesnių SQL Server Ekspertizė padeda interpretuoti.
2. S gavimastarsu aktyvumo monitoriumi
Prieš efektyviai naudodami „Activity Monitor“, turite suprasti įrankio paleidimo prielaidas, reikalingas teises ir įvairius metodus.
2.1 Būtinos sąlygos ir sistemos reikalavimai
naudoti SQL Server Veiklos monitorius, kurio jums reikia SQL Server „Management Studio“ (SSMS), įdiegta jūsų vietiniame kompiuteryje arba jungiamajame serveryje. Veiklos stebėjimo įrankis buvo gerokai perprojektuotas. SQL Server 2008 m., todėl šiame vadove pateikta informacija taikoma SQL Server 2008 ir naujesnės versijos.
Turite turėti tinklo ryšį su SQL Server egzempliorių, kurį norite stebėti. „Cloud-h“ atvejuostredaguotoms duomenų bazėms, norint pasiekti egzempliorių, paprastai reikės VPN ryšio arba tinkamai sukonfigūruotų užkardos taisyklių.
Veiklos monitorius veikia su visais leidimais SQL Server, įskaitant „Express“, „Standard“ ir „Enterprise“. Pats įrankis veikia jūsų kliento kompiuteryje SSMS sistemoje, todėl serverio ištekliams įtakos turi tik jo vykdomos stebėjimo užklausos.
2.2 Reikalingi leidimai
Tinkami leidimai yra būtini, kad Veiklos monitorius veiktų tinkamai. Be atitinkamų teisių galite matyti tuščią ekraną arba gauti klaidų pranešimus apie prieiga uždrausta.
2.2.1 Leidimas peržiūrėti serverio būseną
Geriausios PERŽIŪRĖTI SERVERIO BŪSENĄ Leidimas yra pagrindinis reikalavimas norint naudoti „Activity Monitor“. Šis serverio lygio leidimas leidžia matyti visus aktyvius procesus ir su jais susijusią metriką.
Norėdami suteikti šį leidimą, serverio administratorius gali vykdyti:
GRANT VIEW SERVER STATE TO [YourLoginName];
Be „VIEW SERVER STATE“ (peržiūrėti serverio būseną), veiklos monitorius gali atsidaryti, bet jokiame iš jo sričių nerodyti jokių duomenų.
2.2.2 Duomenų bazės lygio teisės
Norint peržiūrėti informaciją duomenų failo įvesties/išvesties srityje, reikia papildomų teisių. Tiksliau, turite turėti vieną iš šių derinių:
- KURTI DUOMENŲ BAZĘ leidimą arba
- KEISTI BET KOKĮ DUOMENŲ BAZĘ leidimą arba
- PERŽIŪRĖTI BET KURĮ APIBRĖŽIMĄ leidimas
Šie leidimai turi būti derinami su PERŽIŪRĖTI SERVERIO BŪSENĄ kad galėtumėte naudotis visomis Veiklos monitoriaus funkcijomis.
2.2.3 Leidimų trikčių šalinimas
Jei Veiklos monitorius atsidaro, bet nerodo jokių duomenų, teisės priklauso nuoost Dažna priežastis. Patikrinkite, ar jūsų prisijungimo vardui serverio lygmeniu suteikta teisė PERŽIŪRĖTI SERVERIO BŪSENĄ. Savo teises galite patikrinti paleisdami:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
Stulpelyje „permission_name“ ieškokite „VIEW SERVER STATE“. Jei jos nėra, susisiekite su duomenų bazės administratoriumi, kad jis ją suteiktų.
2.3 Kaip atidaryti veiklos monitorių SSMS
SQL Server „Management Studio“ siūlo keturis skirtingus „Activity Monitor“ paleidimo būdus, suteikdami jums lankstumo, atsižvelgiant į jūsų darbo eigos nuostatas.
2.3.1 1 metodas: iš įrankių juostos
Greičiausias būdas atidaryti Veiklos monitorių yra naudoti įrankių juostos piktogramą:
- Prisijunkite prie savo SQL Server egzempliorius SQL Server Vadybos studija.
- Standartinėje įrankių juostoje raskite Veiklos monitoriaus piktogramą (ji atrodo kaip juostinė diagrama su žaliu paleidimo mygtuku).
- Spustelėkite piktogramą, kad paleistumėte Veiklos monitorių.
Šis metodas yra greičiausias, kai jau dirbate SSMS ir reikia greitai patikrinti serverio veiklą.
2.3.2 2 metodas: iš objektų naršyklės
Taip pat galite paleisti „Activity Monitor“ tiesiai iš „Object Explorer“:
- Objektų naršyklėje raskite SQL Server egzempliorius, kurį norite stebėti.
- Dešiniuoju pelės mygtuku spustelėkite egzemplioriaus pavadinimą.
- pasirinkti Activity Monitor iš kontekstinio meniu.
Šis metodas naudingas jungiantis prie kelių serverių, nes užtikrinama, kad stebite tinkamą egzempliorių.
2.3.3 3 metodas: sparčiųjų klavišų naudojimas
Vartotojams, kurie daugiausia dėmesio skiria klaviatūros naudojimui, SQL Server „Management Studio“ teikia specialų spartųjį klavišą:
- Įsitikinkite, kad SSMS yra aktyvus langas ir esate prisijungę prie egzemplioriaus.
- spauda "Ctrl" + Kitas + A.
- Objektų naršyklėje bus atidarytas šiuo metu pasirinkto egzemplioriaus aktyvumo monitorius.
Atminkite, kad „Activity Monitor“ prisijungs prie bet kurio serverio egzemplioriaus, kurį pasirinkote „Object Explorer“, todėl prieš naudodami šį spartųjį klavišą įsitikinkite, kad pasirinkote tinkamą egzempliorių.
2.3.4 4 metodas: iš parinkčių meniu (Starkonfigūracija)
Jei dažnai naudojate Veiklos stebėjimo priemonę, galite sukonfigūruoti SSMS, kad ji būtų paleidžiama automatiškai kiekvieną kartą, kai...tarparaiška:
- In SQL Server Valdymo studija, eikite į Ištekliai -> Nustatymai.
- Dialogo lange Parinktys išplėskite aplinka, Tada pasirinkite Starvamzdis.
- Nuo Tuo starvamzdis išskleidžiamajame sąraše pasirinkite Atidaryti objektų naršyklę ir veiklos monitorių.
- pasirinkti OK.
Kitą kartą paleidus SSMS ir prisijungus prie serverio, „Activity Monitor“ bus automatiškai atidarytas kartu su „Object Explorer“.
3. Veiklos stebėjimo sričių supratimas
Veiklos monitorius susistemina informaciją penkiuose išskleidžiamuose langeliuose, kurių kiekvienas pateikia skirtingą serverio veiklos perspektyvą. Norint efektyviai šalinti triktis, labai svarbu suprasti, kas rodoma kiekviename lange.
3.1 Apžvalgos langas
Apžvalgos srityje pateikiami keturi realaus laiko grafikai, kurie suteikia greitą jūsų sveikatos apžvalgą. SQL Server pavyzdys. Šie grafikai atnaujinami konfigūruojamu intervalu ir padeda iš karto nustatyti nenormalius modelius.
3.1.1 % procesoriaus laiko
Šiame grafike rodomas laikas, kurį procesorius praleidžia vykdydamas ne laisvos eigos gijas. SQL Server egzempliorius visuose procesoriuose. Reikšmė reiškia SQL Serverprocesoriaus apkrovą, o ne visą serverio procesoriaus apkrovą.
Jei procesoriaus laikas nuolat yra 100 % arba arti jo, jūsų serveris yra apkrautas procesoriaus. Tai gali reikšti neefektyvias užklausas, trūkstamus indeksus arba nepakankamą aparatinės įrangos talpą. Norėdami nustatyti, kurios užklausos naudoja daugiausiai laiko, naudokite sritį „Naujausios brangios užklausos“.ost Procesoriaus.
3.1.2 Laukiančios užduotys
Ši metrika rodo užduočių, kurios laukia, kol bus atlaisvinti ištekliai, kad būtų galima jas tęsti, skaičių. Užduotys gali laukti procesoriaus, įvesties / išvesties, atminties arba užrakinimo.
Nuolat didelis laukiančių užduočių skaičius rodo išteklių konkurenciją. Srityje „Išteklių laukimas“ pateikiama daugiau informacijos apie tai, kokio tipo ištekliai sukelia laukimą.
3.1.3 Duomenų bazės įvestis/išvestis (MB/s)
Šiame grafike parodytas duomenų perdavimo tarp atminties ir disko greitis. Jame pateikiami ir skaitymo, ir rašymo duomenys, matuojami megabaitais per sekundę.
Duomenų bazės įvesties/išvesties duomenų šuoliai gali rodyti užklausas, kurios atlieka didelių lentelių nuskaitymus, pernelyg didelį registravimo aktyvumą arba kontrolinių taškų operacijas. Duomenų failo įvesties/išvesties srityje įvesties/išvesties aktyvumas pateikiamas pagal duomenų bazę ir failą.
3.1.4 Paketinės užklausos/sek.
Šis rodiklis rodo skaičių SQL Server Per sekundę instancija gauna paketų. Paketas gali būti vienas arba keli kartu pateikti teiginiai.
Ši reikšmė suteikia bendrą serverio aktyvumo vaizdą. Staigus paketinių užklausų sumažėjimas įprastomis darbo valandomis gali rodyti programų ryšio problemas arba su naudotojais susijusias problemas.
3.1.5 Atnaujinimo intervalų nustatymas
Galite tinkinti, kaip dažnai „Activity Monitor“ atnaujina duomenis:
- Dešiniuoju pelės mygtuku spustelėkite bet kurioje apžvalgos srities vietoje.
- pasirinkti Atnaujinimo intervalas.
- Pasirinkite intervalą iš iš anksto nustatytų verčių: 1 sekundė, 5 sekundės, 10 sekundžių (numatytasis), 30 sekundžių, 1 minutė arba 1 valanda.
Nustačius atnaujinimo intervalus, trumpesnius nei 10 sekundžių, padidėja serverio stebėjimo apkrova. Didelės apkrovos gamybinėms sistemoms apsvarstykite galimybę naudoti 30 sekundžių ar ilgesnius intervalus, kad sumažintumėte poveikį.
3.2 Procesų sritis
Procesų srityje rodoma informacija apie šiuo metu vykstančius seansus jūsų kompiuteryje. SQL Server pavyzdys. Šis langas yra būtinas norint nustatyti, kas ką daro, ir pastebėti blokavimo problemas.
3.2.1 Proceso informacijos supratimas
Kiekviena eilutė procesų srityje rodo aktyvų seansą serveryje. Srityje rodomi visų duomenų bazių ir visų vartotojų seansai, todėl galite gauti išsamų serverio veiklos vaizdą.
Rodoma informacija apima prisijungimo vardą, programos pavadinimą, hostpavadinimas, pasiekiama duomenų bazė ir dabartinė komanda. Tai padeda susieti duomenų bazės veiklą su konkrečiais vartotojais ar programomis.
3.2.2 Pagrindinių stulpelių paaiškinimas
Supratimas apie pagrindinius stulpelius padeda efektyviai interpretuoti proceso informaciją:
- Sesijos ID: Unikalus kiekvieno ryšio identifikatorius. Sistemos procesai naudoja neigiamus sesijos ID.
- Vartotojo procesas: Nurodo, ar tai vartotojo seansas (Taip), ar sistemos procesas (Ne).
- Įėjimas: Geriausios SQL Server prisijungimo vardas arba su sesija susieta „Windows“ paskyra.
- Duomenų bazė: Dabartinis seanso duomenų bazės kontekstas.
- Užduoties būsena: Rodo, ką sesija šiuo metu daro (VYKDO, SUSTABDYTA, MIEGO ir pan.).
- komanda: Vykdomos komandos tipas (SELECT, INSERT, UPDATE ir kt.).
- Naudojimas: Ryšį sukūrusios programos pavadinimas.
- Laukimo laikas: Kiek laiko (milisekundėmis) sesija laukė išteklių.
- Laukimo tipas: Konkretus ištekliaus tipas, kurio laukia sesija.
- CPU laikas: Bendras šio seanso sunaudotas procesoriaus laikas nuo prisijungimo.
- Atminties naudojimas: Šiuo metu sesijai skirta atminties kiekis (KB).
3.2.3 Filtravimo ir rūšiavimo procesai
Procesų srityje yra galingos filtravimo funkcijos, kurios padeda sutelkti dėmesį į atitinkamus seansus:
- Spustelėkite išskleidžiamąją rodyklę bet kurio stulpelio antraštėje.
- Filtras rodo galimas to stulpelio reikšmes, įskaitant Visi, Blankaiir Netušti.
- Pasirinkite konkrečias reikšmes, kad būtų filtruojamas rodymas tik pagal tuos seansus.
Pavyzdžiui, galite filtruoti Užduoties būsena , kad būtų rodomi tik VYKDOMOS sesijos, arba filtras duomenų bazė norėdami matyti veiklą konkrečioje duomenų bazėje.
Taip pat galite rūšiuoti pagal bet kurį stulpelį spustelėdami jo antraštę. Spustelėkite vieną kartą, jei norite rūšiuoti didėjimo tvarka, du kartus – mažėjimo tvarka.
3.2.4 Blokuojančių ir užblokuotų seansų identifikavimas
Procesų sritis padeda nustatyti blokavimo scenarijus, kai vienas seansas neleidžia tęsti kitų:
- Užblokavo: Rodomas šį seansą blokuojančio seanso ID. Jei šiame stulpelyje yra reikšmė, seansas laukia, kol bus užrakintas kito seanso.
- Galvos blokatorius: Rodo „1“, jei ši sesija blokuoja kitas, bet pati nėra blokuojama. Tai yra blokavimo grandinės pagrindinė priežastis.
Norėdami ištirti blokavimo problemą, pirmiausia nustatykite pagrindinio blokatoriaus seansą (sesiją, pažymėtą „1“ stulpelyje „Pagrindinio blokatorius“), tada išnagrinėkite jo veiksmus ir nuspręskite, ar leisti jam užbaigti, ar jį nutraukti.
3.2.5 Proceso veiksmai (nutraukimas, išsami informacija, sekimas)
Veiklos monitorius leidžia atlikti veiksmus atskirų sesijų metu:
- Dešiniuoju pelės mygtuku spustelėkite bet kurį seansą procesų srityje.
- Pamatysite kelias parinktis:
- detalės: Rodo paskutinę šios sesijos metu vykdytą komandą.
- Nužudymo procesas: Nutraukia sesiją (naudokite atsargiai).
- Sekimo procesas SQL Server profiliuotojas: Pradeda SQL Server Profiler ir automatiškai filtruoja, kad būtų rodoma tik šio seanso veikla.
Parinktyje „Išsami informacija“ rodomas komandos tekstas, tačiau atkreipkite dėmesį, kad tai yra paskutinis komanda įvykdyta – ji gali būti nevykdoma. Sekimo parinktis yra ypač naudinga, kai reikia matyti visą sesijos vykdomų komandų seką.
3.3 Išteklių laukimo sritis
Laukimo išteklių srityje apibendrinama laukimo statistika, rodanti, kokių tipų išteklių seansai laukia.ost dažnai. Ši informacija yra labai svarbi diagnozuojant našumo kliūtis.
3.3.1 Laukimo statistikos supratimas
Kada SQL Server Jei serveris negali iš karto patenkinti ištekliaus užklausos (pvz., užrakinimo, procesoriaus laiko ar atminties), užklausą pateikusi užduotis pereina į laukimo būseną. Laukimo statistika seka šiuos laukimo laikotarpius ir padeda suprasti, kada serveris praleidžia laiką laukdamas, o ne dirbdamas.
Srityje „Išteklių laukimai“ renkami duomenys iš sistemos dinaminio valdymo rodinių, tokių kaip sys.dm_os_wait_stats ir sys.dm_exec_requests. Kiekvienu atnaujinimo intervalu apskaičiuojamas skirtumas tarp dabartinės ir ankstesnės momentinės kopijos, rodant kiekvieno laukimo tipo kaupimosi greitį.
3.3.2 Laukimo kategorijos
Veiklos monitorius grupuoja šimtus atskirų laukimo tipų į platesnes kategorijas, kad būtų paprasčiau interpretuoti:
- Procesorius: Užduotys, laukiančios, kol atsiras procesoriaus laiko.
- Buferio skląstis: Laukia trumpalaikių sinchronizavimo objektų, apsaugančių prieigą prie duomenų puslapių atmintyje. Šiai kategorijai priklauso puslapių fiksavimo laukimai (PAGELATCH_*).
- Užrakinti: Laukimai, kuriuos sukelia sesijos, kuriose yra užraktai, kurių reikia kitiems sesijoms.
- Atmintis: Laukia atminties suteikimų, reikalingų tokioms operacijoms kaip rūšiavimas ir maišymas.
- Tinklo įvestis/išvestis: Laukiama, kol bus siunčiami duomenys klientams arba gaunami iš jų.
- SQL CLR: Laukimai, susiję su „Common Language Runtime“ vykdymu.
Nors toks grupavimas supaprastina vaizdą, jis taip pat užmaskuoja svarbias detales. Pavyzdžiui, „Buferio fiksavimas“ gali sugrupuoti PAGELATCH_SH, PAGELATCH_UP ir PAGELATCH_EX laukimo laukimus, kurie turi skirtingą įtaką našumui.
3.3.3 Laukimo laiko ir laukimo užduočių interpretavimas
Laukimo išteklių srityje rodomi du pagrindiniai kiekvienos laukimo kategorijos rodikliai:
- Bendras laukimo laikas (ms): Bendras milisekundžių skaičius, sukauptas per dabartinį šios laukimo kategorijos atnaujinimo intervalą.
- Laukiančios užduotys: Užduočių, šiuo metu laukiančių išteklių šioje kategorijoje, skaičius.
Ypač įdomi laukimo laiko reikšmė. Jei atnaujinimo intervalas yra 10 sekundžių, o kategorijos laukimo laikas yra 20 000 ms, tai reiškia, kad laukimas vyksta vienu metu (20 000 ms / 10 000 ms = 2 vienu metu vykstančių laukimų per intervalą vidurkis).
3.3.4 Veiklos kliūčių nustatymas
Norėdami nustatyti, kur jūsų serveris skiria m, naudokite išteklių laukimo sritį.ost laukimo laikas:
- Išskleiskite sritį Išteklių laukimas.
- Stebėkite laukimo kategorijas, kuriose sukaupiamas ilgiausias laukimo laikas.
- Rūšiuoti pagal Bendras laukimo laikas pamatyti, kurie ištekliai yra most suvaržytas.
Didelis buferio užrakto laukimo laikas dažnai rodo konkurenciją dėl duomenų puslapių atmintyje, o tai gali reikšti įvesties / išvesties kliūtis arba laikinosios duomenų bazės konkurenciją. Didelis užrakto laukimo laikas rodo blokavimo problemas. Didelis atminties laukimo laikas rodo, kad užklausų operacijoms nepakanka atminties.
3.4 Duomenų failo įvesties / išvesties sritis
Duomenų failo įvesties/išvesties srityje rodoma kiekvieno serverio duomenų bazės failo disko veikla, padedanti nustatyti įvesties/išvesties kliūtis ir suprasti disko naudojimo modelius.
3.4.1 Įvesties / išvesties metrikų supratimas
Duomenų failo įvesties/išvesties srityje rodomi keli kiekvieno duomenų bazės failo rodikliai:
- Duomenų bazė: Duomenų bazės pavadinimas.
- Failo tipas: Duomenys (įskaitant lenteles ir indeksus) arba Žurnalas (operacijų žurnalas).
- Loginis pavadinimas: Loginis failo pavadinimas, kaip apibrėžta SQL Server.
- MB/sek. nuskaitymas: Duomenų nuskaitymo iš šio failo greitis.
- Parašyta MB/sek.: Į šį failą įrašymo greitis.
- Atsakymo laikas (ms): Vidutinis įvesties / išvesties operacijų atsako laikas šiame faile.
Šie rodikliai atnaujinami tuo pačiu intervalu kaip ir apžvalgos sritis, todėl galite realiuoju laiku matyti disko veiklą.
3.4.2 Įvesties / išvesties kliūčių nustatymas
Stebėkite šiuos modelius, kurie rodo įvesties / išvesties našumo problemas:
- Didelis atsako laikas: Nuolat viršijantis 15–20 ms atsako laikas rodo lėtas disko posistemes. Virš 50 ms atsako laikas rodo rimtus įvesties / išvesties sutrikimus.
- Nesubalansuota apkrova: Jei vienas duomenų failas rodo žymiai didesnius įvesties / išvesties dažnius nei kiti toje pačioje duomenų bazėje, gali būti naudinga pridėti papildomų failų, kad paskirstytumėte apkrovą.
- Per didelis „Tempdb“ aktyvumas: Dideli įvesties/išvesties dažniai laikinųjų duomenų bazėje (tempdb) dažnai rodo, kad užklausos sukuria didelius tarpinius rezultatų rinkinius arba naudoja neefektyvius vykdymo planus.
3.4.3 Duomenų bazės failų analizė
Norėdami suprasti, kaip jūsų duomenų bazės naudoja disko išteklius, naudokite duomenų failo įvesties/išvesties sritį:
- Išskleiskite duomenų failo įvesties/išvesties sritį.
- Rūšiuoti pagal MB/sek. skaitymas or Įrašyta MB/sek. identifikuoti most aktyvių failų.
- Atkreipkite dėmesį į visus failus, kuriuose nuolat didelis aktyvumas arba ilgas atsakymo laikas.
- Norėdami nustatyti, kurios užklausos lemia įvesties/išvesties apkrovą, palyginkite šią informaciją su sritimi „Naujausios brangios užklausos“.
3.5 Naujausių brangių užklausų sritis
Naujausių brangių užklausų sritis dažnai yra most vertingas langas programų našumo problemoms spręsti. Jame rodomos užklausos, kurios sunaudoja daug serverio išteklių, ir padeda nustatyti optimizavimo galimybes.
3.5.1 Užklausų metrikų supratimas
Veiklos monitorius rodo kelis kiekvienos brangios užklausos rodiklius:
- Vykdymų skaičius/min.: Kiek kartų užklausa buvo įvykdyta per paskutinę minutę.
- CPU (ms/sek.): Šios užklausos sunaudojamas procesoriaus laikas per sekundę.
- Fizinis nuskaitymas/sek.: Fizinio disko nuskaitymų skaičius per sekundę šiai užklausai.
- Loginių įrašų skaičius/sek.: Loginių įrašų (į buferinę talpyklą) skaičius per sekundę.
- Loginiai skaitymai/sek.: Loginių nuskaitymų (iš buferio talpyklos) skaičius per sekundę.
- Vidutinė trukmė (ms): Vidutinis šios užklausos vykdymo laikas.
- Planų skaičius: Šios užklausos vykdymo planų skaičius talpykloje.
Šie rodikliai padeda suprasti ne tik tai, kurios užklausos yra brangios, bet ir kodėl jie brangūs ir kaip dažnai jie kursuoja.
3.5.2 Rūšiavimo parinktys
Galite rūšiuoti naujausių brangių užklausų sritį pagal skirtingus rodiklius, kad rastumėte skirtingų tipų problemas:
- Spustelėkite bet kurio stulpelio antraštę, kad rūšiuotumėte pagal tą metriką.
- Įprastos rūšiavimo strategijos apima:
- Rūšiuoti pagal procesorių: Raskite užklausas, kurios naudoja most procesoriaus laikas.
- Rūšiuoti pagal vykdymų skaičių/min.: Nustatykite užklausas, kurios kartojamos pernelyg dažnai.
- Rūšiuoti pagal fizinius rodmenis: Raskite užklausas, sukeliančias most disko įvestis/išvestis.
- Rūšiuoti pagal vidutinę trukmę: Raskite ilgai trunkančias užklausas.
Šalindami našumo problemas, pabandykite rūšiuoti pagal kelis stulpelius, kad gautumėte skirtingus požiūrius. Tikroji problema gali būti užklausa, kuriai procesoriaus apkrovimas yra vidutinis, bet vykdymo dažnis per minutę yra itin didelis.
3.5.3 Užklausos teksto peržiūra
Norėdami pamatyti tikrąją SQL užklausą, slypinčią už brangios užklausos:
- Dešiniuoju pelės mygtuku spustelėkite užklausos eilutę srityje „Naujausios brangios užklausos“.
- pasirinkti Redaguoti užklausos tekstą.
- Atidaromas naujas užklausos langas, kuriame rodomas visas SQL sakinys.
Tai leidžia jums išnagrinėti užklausos logiką ir nustatyti galimas optimizavimo galimybes. Tada galite nukopijuoti užklausos tekstą, kad išbandytumėte modifikuotas versijas.
3.5.4 Vykdymo planų analizė
Vykdymo planai parodo, kaip SQL Server vykdo užklausą, atskleisdamas neefektyvumus, pvz., trūkstamus indeksus arba netinkamus sujungimo tipus:
- Dešiniuoju pelės mygtuku spustelėkite užklausos eilutę srityje „Naujausios brangios užklausos“.
- pasirinkti Rodyti vykdymo planą.
- SQL Server „Management Studio“ rodo grafinį užklausos vykdymo vaizdą.
Ieškokite operacijų, kurios sunaudoja didelę užklausos laiko dalįost, įspėjimus apie trūkstamą statistiką ar indeksus ir netikėtas lentelių nuskaitymo operacijas. Tai dažnai nurodo, į kurias sritis reikėtų sutelkti optimizavimo pastangas.
3.5.5 Probleminių užklausų nustatymas
Stebėkite šiuos modelius srityje „Naujausios brangios užklausos“:
- Pernelyg dideli egzekucijos: Užklausa, vykdoma tūkstančius kartų per minutę, gali rodyti N+1 užklausos problemą, kai programos kodas iškviečia duomenų bazę ciklo viduje.
- Didelis fizinis skaitymas: Užklausos, kurių fizinis skaitymo dažnis yra didelis, dažnai pasiekia diską, o tai rodo, kad trūksta indeksų arba užklausos yra prastai parašytos.
- Didelis procesoriaus našumas su maža trukme: Daug greitų užklausų, kurios sunaudoja daug procesoriaus išteklių, gali paveikti serverio našumą tiek pat, kiek ir kelios lėtos užklausos.
- Kelių planų skaičius: Užklausos su daug vykdymo planų gali susidurti su parametrų aptikimo problemomis arba neparametruotomis užklausomis, dėl kurių plano talpykla išsipučia.
4. Veiklos monitoriaus naudojimas našumo trikčių šalinimui
Veiklos monitorius išties sužiba, kai jį sistemingai naudojate našumo problemoms diagnozuoti ir spręsti. Šiame skyriuje aprašomi dažniausiai pasitaikantys trikčių šalinimo scenarijai ir kaip juos spręsti.
4.1 Pernelyg dažnų užklausų vykdymų diagnostika
Vienas iš jųost Dažna našumo problema yra ta, kad užklausos vykdomos daug dažniau nei būtina, dažnai dėl programos projektavimo problemų.
4.1.1 Pasikartojančių užklausų identifikavimas
Norėdami pastebėti per dažnai vykdomas užklausas:
- Atidarykite Veiklos monitorių ir išskleiskite Naujausios brangios užklausos duona.
- Rūšiuoti pagal Vykdymų skaičius/min. (vykdymų per minutę).
- Ieškokite užklausų viršuje, kurių vykdymo skaičius atrodo nepagrįstai didelis.
- Dešiniuoju pelės mygtuku spustelėkite įtartiną užklausą ir pasirinkite Redaguoti užklausos tekstą norint patikrinti SQL sakinį.
Pavyzdžiui, jei matote paprastą SELECT sakinį, vykdomą 37 000 kartų per minutę, suabejokite, ar programai tikrai reikia taip dažnai iškviesti šią užklausą. Most užklausos, atliekamos daugiau nei kelis tūkstančius kartų per minutę, leidžia atlikti tyrimą.
4.1.2 Pagrindinės priežasties analizė
Pernelyg dažnas užklausų vykdymas paprastai kyla dėl šių problemų:
- N+1 užklausos problema: Programos kodas nuskaito elementų sąrašą, tada kiekvienam elementui vykdo atskirą užklausą, kad gautų susijusius duomenis. Tai sukuria N papildomų užklausų, kur N yra elementų skaičius.
- Trūksta talpyklos: Programa pateikia duomenų bazėje užklausą dėl duomenų, kurie rarely pakeitimus, užuot juos kaupę programos atmintyje.
- Apklausos ciklai: Kodas pakartotinai užklausia duomenų bazę, tikrindamas būsenos pakeitimus, o ne naudodamas pakeitimų pranešimus ar pranešimų eiles.
- ORM neefektyvumas: „Entity Framework“ ir panašūs įrankiai kartais generuoja neefektyvius užklausų šablonus, kai kūrėjai nesupranta, kaip jų kodas verčiamas į SQL.
Norėdami nustatyti pagrindinę priežastį, atsekite užklausą iki programos kodo. Atkreipkite dėmesį į taikymas bei Prisijungti stulpelius procesų srityje, kai vykdoma užklausa. Taip pat galite dešiniuoju pelės mygtuku spustelėti procesą ir pasirinkti Sekimo procesas SQL Server Profiler kad pamatytumėte skambinimo modelį.
4.1.3 Sprendimai ir geriausia praktika
Nustačius pernelyg dažnus užklausų vykdymus, apsvarstykite šiuos sprendimus:
- Paketinis apdorojimas: Modifikuokite programos kodą, kad vienoje užklausoje būtų galima gauti kelis elementus naudojant sujungimus arba IN sąlygas, o ne vykdyti atskiras užklausas cikle.
- Rezultatų kaupimas talpykloje: Dažnai pasiekiama talpykla, retai keičiami programos atminties duomenys su tinkamu galiojimo laiku.
- Nekantrus pakrovimas: Konfigūruokite ORM sistemas, kad jos naudotų greito įkėlimo strategijas, kurios gautų susijusius duomenis atliekant mažiau, bet efektyvesnes užklausas.
- Užklausos parametravimas: Užtikrinkite, kad užklausos naudotų parametrus, o ne jungtų reikšmes, taip pagerinant plano talpyklos pakartotinį naudojimą ir sumažinant kompiliavimo išlaidas.
4.2 Blokavimo problemų tyrimas
Blokavimas įvyksta, kai vienas seansas yra užrakintas ir neleidžia tęsti kitų seansų. Tai pasireiškia lėtu programų atsako laiku ir vartotojų nusivylimu.
4.2.1 Blokuojančių grandinių identifikavimas
Blokavimui aptikti ir analizuoti:
- Atidarykite Veiklos monitorių ir išskleiskite procesai duona.
- Ieškokite sesijų su reikšmėmis Užblokavo stulpelis – jie laukia kitų sesijų užrakintų laukelių.
- Raskite sesijas, kurių eilutėje yra „1“ Galvos blokatorius stulpelis – tai yra pagrindinė blokuojančių grandinių priežastis.
- Pastaba Sesijos ID galvos blokatoriaus.
- Dešiniuoju pelės mygtuku spustelėkite galvos blokavimo seansą ir pasirinkite Detalės kad pamatytumėte, kokią komandą jis vykdo.
Blokavimo grandinės supratimas yra labai svarbus. Pirmiausia reikia ištirti blokuojančiąją grandinę, o ne vėlesnes blokuojamas sesijas.
4.2.2 Užraktų tipų supratimas
Geriausios Laukimo tipas stulpelis procesų srityje nurodo, kokio tipo blokavimo seansai laukia:
- LCK_M_X: Išskirtinio užrakinimo laukimas, paprastai sukeliamas UPDATE, DELETE arba INSERT operacijų.
- LCK_M_S: Bendro užrakto laukimas, paprastai SELECT komandos, laukiančios, kol bus atlaisvinti išskirtiniai užraktai.
- LCK_M_U: Atnaujinimo užrakto laukimas – tarpinis užrakto tipas, naudojamas atnaujinimų metu.
- LCK_M_IX: Išskirtinio užrakto laukimas, nurodantis puslapio arba eilutės lygio užrakto ginčą.
Geriausios Laukimo išteklius stulpelyje rodoma, kuris duomenų bazės objektas yra užrakintas, todėl galite suprasti, kuri lentelė ar indeksas yra susijęs su ginču.
4.2.3 Blokavimo problemų sprendimas
Nustačius blokuojančią sesiją ir jos priežastį, galite rinktis iš kelių variantų:
- Palaukite užbaigimo: Jei užklausos blokavimo įrankis vykdo teisėtą užklausą, kuri netrukus bus užbaigta, geriausia leisti jai užbaigti natūraliai.
- Nutraukite sesiją: Jei užklausos blokavimo programa užstrigo arba vykdo užklausą, kurią reikėtų atšaukti:
- Dešiniuoju pelės mygtuku spustelėkite sesiją srityje Procesai.
- pasirinkti Stabdyti procesą.
- Patvirtinkite veiksmą dialogo lange.
- Užklausų optimizavimas: Jei blokavimas pasikartoja naudojant tas pačias užklausas, optimizuokite jas, kad sutrumpintumėte jų blokavimo trukmę.
- Izoliacijos lygių reguliavimas: Apsvarstykite galimybę naudoti READ COMMITTED SNAPSHOT ISOLATION, kad sumažintumėte blokavimą esant dideliam skaitymo krūviui.
- Indekso derinimas: Pridėkite indeksus, kad pagreitintumėte užklausas ir sutrumpintumėte užraktų laikymo laiką.
4.3 Didelio procesoriaus apkrovimo analizė
Kai apžvalgos srityje procesoriaus laikas nuolat rodomas ties 100 % arba arti jo, reikia nustatyti, kurios užklausos yra atsakingos, ir nuspręsti, ar jas galima optimizuoti.
4.3.1 CPU apkrovą naudojančių užklausų identifikavimas
Norėdami rasti užklausas, kurios naudoja per daug procesoriaus išteklių:
- Atidarykite Naujausios brangios užklausos duona.
- Rūšiuoti pagal CPU (ms/sek.) rodyti užklausas naudojant most CPU laikas.
- Išnagrinėkite populiariausias užklausas sąraše.
- Dešiniuoju pelės mygtuku spustelėkite užklausas su dideliu procesoriaus našumu ir pasirinkite Redaguoti užklausos tekstą norėdami peržiūrėti SQL sakinį.
- pasirinkti Rodyti vykdymo planą kad suprastumėte, kaip vykdoma užklausa.
Atkreipkite dėmesį ne tik į individualių užklausų procesoriaus apkrovą, bet ir į Vykdymų skaičius/min. stulpelis. Užklausa, kuri vykdymui naudoja vidutiniškai daug procesoriaus išteklių, bet paleidžiama tūkstančius kartų per minutę, gali būti didžiausias procesoriaus vartotojas.
4.3.2 Užklausų optimizavimo metodai
Įprasti CPU sunaudojimo mažinimo būdai yra šie:
- Pridėti trūkstamus indeksus: Indekso paieškos naudoja daug mažiau procesoriaus nei lentelių nuskaitymai. Vykdymo planuose ieškokite trūkstamų indekso rekomendacijų.
- Perrašykite neefektyvias užklausas: Pakeiskite žymeklius rinkiniais pagrįstomis operacijomis, pašalinkite nereikalingas funkcijas WHERE sakiniuose ir pašalinkite nereikalingas jungtis.
- Atnaujinti statistiką: Pasenusi statistika sukelia SQL Server pasirinkti neefektyvius vykdymo planus. Paleiskite UPDATE STATISTICS paveiktose lentelėse.
- Sumažinti duomenų kiekį: Pridėkite WHERE sąlygas, kad duomenys būtų filtruojami anksčiau, puslapiavimui naudokite TOP arba OFFSET/FETCH ir venkite SELECT *.
- Parametrų šnipinėjimo taisymas: Kai parametrų paieška sukelia problemų, naudokite OPTION (RECOMPILE), užklausų patarimus arba plano vadovus.
4.4 Atminties problemų tyrimas
Dėl atminties trūkumo užklausos gali būti perkeltos į diską, o tai labai pablogina našumą. Veiklos monitorius padeda nustatyti daug atminties reikalaujančias operacijas.
4.4.1 Atminties metrikų supratimas
Geriausios Atminties naudojimas Stulpelyje „Procesai“ rodoma kiekvienam seansui skirta atmintis kilobaitais. Didelis vieno seanso atminties naudojimas dažnai rodo:
- Didelės rūšiavimo arba maišos operacijos, kurios netilpo į pradinę suteiktą atmintį
- Užklausos, gaunančios didžiulius rezultatų rinkinius
- Pernelyg didelis lygiagretumas, sukuriantis daug vykdymo plano operatorių kopijų
- Atminties nutekėjimas CLR saugomose procedūrose arba funkcijose
Laukimo lauke „Išteklių laukimas“ gali būti rodoma, kad užklausos negali gauti pakankamai atminties ir turi laukti, kol jos atsiras.
4.4.2 Atminties reikalaujančių užklausų identifikavimas
Norėdami rasti užklausas, kurios sukelia atminties spaudimą:
- Lauke procesai sritis, rūšiuoti pagal Atminties naudojimas kad pamatytumėte sesijas, kurios sunaudoja most atmintis.
- Dešiniuoju pelės mygtuku spustelėkite sesijas, kuriose naudojama daug atminties, ir pasirinkite Detalės kad peržiūrėtumėte jų užklausas.
- Lauke Naujausios brangios užklausos srityje ieškokite užklausų su dideliu Loginiai skaitymai or Loginiai rašymai, nes tai dažnai koreliuoja su atminties naudojimu.
- Išnagrinėkite rūšiavimo ir maišos atitikimo operatorių, kurie naudoja atminties suteikimus, vykdymo planus.
Užklausos, kuriose vykdymo planuose rodomi įspėjimai „Atminties suteikimas“ arba įspėjimai apie išsiliejimą, rodo atminties trūkumo problemas.
4.5 Programos našumo problemų aptikimas
Kai vartotojai praneša apie lėtą programų atsako laiką, „Activity Monitor“ padeda nustatyti, ar duomenų bazė yra kliūtis.
4.5.1 Veiklos monitoriaus ir programos problemų koreliacija
Norėdami ištirti programos lėtumą:
- Atkreipkite dėmesį į tikslų laiką, kada vartotojai pranešė apie problemas, ir į paveiktas programas.
- Atidarykite Veiklos monitorių ir patikrinkite Apžvalga tuo metu išteklių padidėjimo srityje.
- Lauke procesai sritis, filtruoti pagal taikymas kad būtų rodomi tik ryšiai iš paveiktos programos.
- Ieškokite aukšto Laukimo laikas reikšmės, kurios rodo duomenų bazės vėlavimus.
- Patikrink Naujausios brangios užklausos tos programos užklausų sritis, kuri naudoja daug išteklių.
Jei duomenų bazėje nerodoma jokios neįprastos veiklos, o vartotojai veikia lėtai, problema greičiausiai slypi programos kode, tinklo delsoje arba kliento pusės našume.
4.5.2 Neefektyvių taikymo modelių nustatymas
„Activity Monitor“ atskleidžia keletą programų dizaino trūkumų:
- „Chatty“ programėlės: Daug mažų užklausų, o ne mažiau, efektyvesnių užklausų. Atpažįstama pagal didelį ryšių skaičių ir daugybę paprastų užklausų naujausių brangių užklausų sąraše.
- N+1 užklausos: Viena užklausa ir N papildomų užklausų susijusiems duomenims. Rodoma kaip paprasta užklausa, kurios vykdymų skaičius per minutę yra itin didelis.
- Dideli rezultatų rinkiniai: Programos nuskaito daug daugiau duomenų nei reikia. Ieškokite didelio Loginiai skaitymai kartu su paprastomis SELECT * užklausomis.
- Trūkstami skirti laikai: Programos, kurios nenustato komandų skirtojo laiko, gali palikti ryšius atidarytus neribotą laiką, matomus kaip ilgai trunkančius seansus procesų srityje.
5. Alternatyvūs metodai: Veiklos stebėjimo duomenų gavimas naudojant T-SQL
Nors „Activity Monitor“ teikia patogią grafinę sąsają, kartais reikia gauti lygiavertę informaciją programiškai arba sukurti pasirinktinius stebėjimo sprendimus.
5.1 Dinaminių valdymo rodinių (DMV) naudojimas
SQL Server pateikia veiklos informaciją per dinaminius valdymo rodinius, kuriuos „Activity Monitor“ užklausia užkulisiuose.
5.1.1 Pagrindiniai DMV veiklos stebėjimui
Most Svarbūs DMV, skirti atkartoti veiklos monitoriaus funkcijas, yra šie:
- sys.dm_exec_requests: Rodo šiuo metu vykdomas užklausas su procesoriaus, įvesties / išvesties ir laukimo informacija.
- sys.dm_exec_sessions: Pateikiama sesijos lygio informacija, pvz., prisijungimo vardas, host pavadinimas ir programos pavadinimas.
- sys.dm_os_wait_stats: Pateikia bendrą viso egzemplioriaus laukimo statistiką.
- sys.dm_exec_query_stats: Pateikiama kaupiamoji talpykloje saugomų užklausų našumo statistika.
- sys.dm_io_virtual_file_stats: Grąžina duomenų ir žurnalų failų įvesties/išvesties statistiką.
- sys.dm_exec_sql_text: Nuskaito SQL tekstą nurodytam sql_handle arba plan_handle.
- sys.dm_exec_query_plan: Grąžina talpykloje saugomos užklausos vykdymo planą.
5.1.2 Proceso informacijos užklausų pavyzdžiai
Norėdami atkartoti procesų srities funkcionalumą, galite pateikti užklausą:
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 Laukimo statistikos užklausų pavyzdžiai
Norėdami peržiūrėti laukimo statistiką, panašią į sritį „Išteklių laukimas“:
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 Naudojant sp_WhoIsActive
„sp_WhoIsActive“ yra galinga bendruomenės sukurta saugoma procedūra, kuri viename rezultatų rinkinyje pateikia išsamesnę informaciją nei „Activity Monitor“.
5.2.1 „sp_WhoIsActive“ diegimas
Norėdami įdiegti sp_WhoIsActive:
- Atsisiųskite naujausią versiją iš
http://whoisactive.com. - Atsisiunčiamas failas yra SQL scenarijus, kuriame yra procedūros apibrėžimas.
- Atidarykite scenarijų programoje SQL Server Vadybos studija.
- Prisijunkite prie savo SQL Server instancija.
- Vykdykite scenarijų, kad sukurtumėte procedūrą pagrindinėje duomenų bazėje.
- Suteikite vykdymo teises atitinkamiems vartotojams.
Kadangi „sp_WhoIsActive“ yra įdiegtas pagrindinėje duomenų bazėje, jį galima pasiekti iš bet kurio duomenų bazės konteksto.
5.2.2 Pagrindiniai naudojimo pavyzdžiai
Paprasčiausias būdas naudoti sp_WhoIsActive yra:
EXEC sp_WhoIsActive;
Tai grąžina rezultatų rinkinį, kuriame rodomi visi aktyvūs seansai su jų užklausomis, laukimo tipais, blokavimo informacija ir išteklių naudojimu.
10 sekundžių trukmės pavyzdyje, rodančiame aktyvumą per tą laikotarpį:
EXEC sp_WhoIsActive @delta_interval = 10;
Tai apskaičiuoja tokių rodiklių kaip procesoriaus ir skaitymų skirtumus, rodydama, kas įvyko per tas 10 sekundžių.
5.2.3 Išplėstiniai parametrai
„sp_WhoIsActive“ palaiko daugybę pritaikymo parametrų:
- @filtras: Filtruokite rezultatus pagal konkrečius seansus, duomenų bazes arba prisijungimus.
- @filtro_tipas: Nurodykite, kam taikomas filtras (seansas, duomenų bazė, prisijungimas ir kt.).
- @get_plans: Į rezultatus įtraukti vykdymo planus (nustatyti į 1).
- @get_locks: Rodyti išsamią užrakto informaciją (nustatyta į 1).
- @get_transaction_info: Rodyti operacijos informaciją (nustatyti į 1).
- @rūšiavimo_tvarka: Rūšiuokite rezultatus pagal skirtingus rodiklius (procesorių, skaitymų skaičių, trukmę ir kt.).
- @destination_table: Įterpkite rezultatus į lentelę istoriniam stebėjimui.
Pavyzdys, rodantis planus, surūšiuotus pagal procesorių:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Sistemoje saugomų procedūrų naudojimas
SQL Server apima tradicines saugomas veiklos stebėjimo procedūras, nors jos teikia mažiau informacijos nei DMV ar veiklos monitorius.
5.3.1 sp_who ir sp_who2
Procedūra „sp_who“ rodo pagrindinę sesijos informaciją:
EXEC sp_who;
Procedūra „sp_who2“ pateikia šiek tiek daugiau informacijos:
EXEC sp_who2;
Abi procedūros rodo sesijos ID, prisijungimo vardus, procesoriaus laiką ir blokavimo informaciją. Tačiau joms trūksta išsamios informacijos, kurią galima gauti naudojant DMV arba veiklos monitorių. Jos yra daug išsamesnės.ost naudinga greitiems patikrinimams, kai greitai reikia minimalios informacijos.
5.3.2 Kitos naudingos sistemos procedūros
Papildomos sistemos stebėsenos procedūros apima:
- sp_lock: Rodo užrakto informaciją (nebenaudojama; vietoj jos naudokite sys.dm_tran_locks).
- sp_monitorius: Rodo statistiką apie SQL Server veikla.
- sp_help: Rodo objektų apibrėžimus ir metaduomenis.
- DBCC SQLPERF: Rodo operacijų žurnalo vietos naudojimą ir laukimo statistiką.
5.4 Pasirinktinių stebėjimo scenarijų kūrimas
Aplinkoms, kurioms reikalingas specialus stebėjimas, viršijantis „Activity Monitor“ teikiamas galimybes, galite kurti pritaikytus sprendimus naudodami DMV.
5.4.1 Pilnas veiklos monitoriaus atitikmuo
Štai išsamus scenarijus, kuris atkartoja most Veiklos monitoriaus funkcionalumas:
-- 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 Stebėjimo automatizavimas naudojant SQL agento užduotis
Galite suplanuoti pasirinktinius stebėjimo scenarijus naudodami SQL Server Agentas:
- Sukurkite lentelę stebėjimo rezultatams saugoti.
- Pakeiskite stebėjimo scenarijų, kad į šią lentelę įterptumėte rezultatus.
- In SQL Server Valdymo studija, išskleisti SQL Server Agentas Objektų naršyklėje.
- Dešiniuoju pelės mygtuku spustelėkite Darbai ir tuomet Naujas darbas.
- Sukonfigūruokite užduotį, kad stebėjimo scenarijus būtų vykdomas reguliariais intervalais.
- Nustatykite įspėjimus arba ataskaitas pagal surinktus duomenis.
Šis metodas leidžia stebėti istoriją ir analizuoti tendencijas, ko nepateikia „Activity Monitor“.
6. Aktyvumo monitoriaus apribojimai ir svarstymai
Nors „Activity Monitor“ yra vertingas įrankis, jo apribojimų supratimas padeda jį tinkamai naudoti ir prireikus papildyti kitais įrankiais.
6.1 Veiklos monitoriaus pridėtinių išlaidų supratimas
„Activity Monitor“ nėra nemokama – ji naudoja serverio išteklius informacijai rinkti ir rodyti. Šių papildomų išlaidų supratimas padės ja naudotis atsakingai.
6.1.1 Poveikis serverio ištekliams
Veiklos monitorius kiekvieną kartą atnaujindamas atlieka užklausas sistemos DMV. Šios užklausos naudoja procesoriaus resursų, generuoja loginius nuskaitymus ir gali trumpam užblokuoti sistemos lenteles. Užimtuose serveriuose šios apkrovos gali turėti įtakos našumui.
Sritys „Procesai“ ir „Naujausios brangios užklausos“ yra ypač brangios, nes jose reikia nuskaityti potencialiai didelius DMV ir talpykloje saugomas lenteles. Serveriuose, kuriuose yra tūkstančiai talpykloje saugomų užklausų planų, naujausių brangių užklausų atnaujinimas gali užtrukti kelias sekundes.
„Microsoft“ dokumentacijoje įspėjama, kad atnaujinimo intervalai, trumpesni nei 10 sekundžių, gali pastebimai paveikti serverio našumą, ypač jau įkeltose sistemose.
6.1.2 Atnaujinimo intervalo geriausios praktikos
Pasirinkite savo situacijai tinkamus atnaujinimo intervalus:
- 1–5 sekundžių: Tik neatidėliotinam kritinių problemų šalinimui mažai apkrautuose serveriuose. Nepalikite Veiklos stebėjimo įjungto šiais intervalais.
- 10 sekundžių (numatytoji reikšmė): Protinga most trikčių šalinimo scenarijai ir bendras stebėjimas.
- 30–60 sekundžių: Geresnis pasirinkimas gamybiniams serveriams, esant dideliam apkrovimui arba ilgalaikiam stebėjimui.
- Tik rankinis atnaujinimas: Situacijoms, kai norite retkarčiais patikrinti dabartinę būseną be nuolatinės apklausos.
Visada uždarykite Veiklos stebėjimo priemonę, kai baigiate tyrimą. Nepalikite jos veikti nuolat, ypač jei ji veikia kelis kartus iš skirtingų vartotojų.
6.2 Laukimo tipo grupavimo problemos
„Activity Monitor“ laukimų skirstymo į kategorijas metodas, nors ir supaprastina vaizdą, gali užgožti svarbias diagnozes.ostic informacija.
6.2.1 Kaip aktyvumo stebėjimo grupės laukia
SQL Server seka šimtus skirtingų laukimo tipų, kurių kiekvienas nurodo konkretų išteklių ar būseną. Veiklos monitorius juos suskirsto į plačias kategorijas, tokias kaip „Buferio užraktas“, „Užrakinimas“ ir „Atmintis“.
Pavyzdžiui, „Buferio užrakto“ kategorijai priklauso PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX ir keli kiti konkretūs laukimo tipai. Nors jie visi susiję su puslapio prieiga, jų priežastys ir sprendimai skiriasi.
„Microsoft“ tiksliai nedokumentuoja, kurie laukimo tipai atitinka kurias kategorijas, todėl sunku suprasti, ką iš tikrųjų matote.
6.2.2 Trūkstami laukimo tipai
Veiklos monitorius nerodo visų laukimo tipų. Most Pažymėtina, kad jame dažnai praleidžiami CXPACKET laukimai, kurie rodo lygiagretų užklausų vykdymą. CXPACKET laukimai yra dažni ir paprastai nesukelia problemų, tačiau žinojimas apie juos padeda suprasti darbo krūvio charakteristikas.
Kai „Activity Monitor“ rodo „Buffer Latch“ kaip didžiausią laukiamąjį laukimą, o kiti įrankiai rodo, kad dominuoja CXPACKET, neatitikimas kyla dėl „Activity Monitor“ filtravimo ir grupavimo logikos.
6.2.3 Kodėl svarbūs konkretūs laukimo tipai
Žinant konkretų laukimo tipą svarbu šalinti triktis:
- PAGELATCH_EX: Dažnai nurodo laikinojo duomenų bazės (tempdb) konkurenciją paskirstymo puslapiuose. Sprendimas apima daugiau laikinojo duomenų bazės (tempdb) duomenų failų pridėjimą.
- PAGELATCH_SH: Gali reikšti, kad vartotojų lentelėse yra daug aktyvių puslapių. Sprendimas apima skaidymą arba indeksų reorganizavimą.
- PAGELATCH_UP: Įprasta atnaujinimų metu. Gali rodyti įprastą veikimą, o ne problemą.
Veiklos monitorius visus šiuos elementus grupuoja pagal „Buferio užraktą“, todėl diagnostiką apsunkina. Tokie įrankiai kaip „sp_WhoIsActive“ ir DMV užklausos rodo konkrečius laukimo tipus.
6.3 Duomenų tikslumas ir savalaikiškumas
„Activity Monitor“ teikia beveik realaus laiko vaizdą, tačiau svarbiausia yra žodis „beveik“. Supratimas apie duomenų rinkimo metodą padeda teisingai interpretuoti rezultatus.
6.3.1 Momentinė nuotrauka ir nuolatinis stebėjimas
Veiklos monitorius rodo konkretaus laiko momentines kopijas, padarytas kiekvienu atnaujinimo intervalu. Įvykiai, įvykstantys tarp momentinių kopijų, nėra fiksuojami. Jei užklausa vykdoma 2 sekundes ir atnaujinate kas 10 sekundžių, galite ją pamatyti vieną kartą arba visai nematyti, priklausomai nuo laiko.
Tai reiškia, kad Veiklos monitorius puikiai randa nuolatines problemas (užblokuoja kelias minutes, nuolat padidina procesoriaus apkrovą), tačiau gali nepastebėti trumpalaikių problemų (trumpalaikių aklavimų, retkarčiais pasitaikančių užklausų padidėjimo).
6.3.2 Apibendrinimas ir atranka
Srityje „Naujausios brangios užklausos“ rodomi duomenys, sugrupuoti nuo tada, kai užklausų planai pateko į talpyklą. Dvi identiškos užklausos su skirtingomis parametrų reikšmėmis rodomos kaip viena eilutė, jei jos dalijasi planu. Šis sugrupavimas gali užmaskuoti problemas, susijusias su konkrečiais parametrų deriniais (parametrų aptikimo problemos).
Išteklių laukimo sritis apskaičiuoja dažnius lygindama momentines kopijas. Jei laukimo statistika tarp momentinių kopijų nustatoma iš naujo (rar(bet įmanoma), apskaičiuoti tarifai gali būti neteisingi.
6.4 Kada NEREIKIA naudoti aktyvumo monitoriaus
„Activity Monitor“ netinka kiekvienam stebėjimo scenarijui. Pripažinkite, kada alternatyvūs įrankiai yra geresnis pasirinkimas.
6.4.1 Istorinės analizės reikalavimai
Veiklos monitorius rodo tik dabartinę arba neseniai vykusią veiklą. Jis nesaugo istorinių duomenų. Jei reikia analizuoti tendencijas per kelias dienas ar savaites, palyginti dabartinį našumą su pradiniais rodikliais arba generuoti ataskaitas apie našumo modelius, veiklos monitoriaus nepakanka.
Istorinei analizei naudokite SQL Serverintegruotas našumo ataskaitų suvestinės, išplėstiniai įvykiai su failu targauna arba trečiųjų šalių stebėjimo sprendimus.
6.4.2 Išsamios laukimo statistikos poreikiai
Kai norint atlikti išsamesnį derinimą reikia tikslios informacijos apie laukimo tipą, „Activity Monitor“ grupavimo ir filtravimo funkcijos jos nepakanka. Vietoj to naudokite tiesiogines DMV užklausas arba „sp_WhoIsActive“.
Norėdami atlikti išsamią laukimo statistikos analizę, tiesiogiai pateikite užklausą sys.dm_os_wait_stats ir rankiniu būdu išfiltruokite nepalankius laukimus.
6.4.3 Gamybos serverio aspektai
Gamybos serveriuose, kurie yra labai apkrauti, „Activity Monitor“ pridėtinės išlaidos gali būti problemiškos. Keli duomenų bazių administratoriai neturėtų paleisti „Activity Monitor“ vienu metu tame pačiame serveryje.
Gamybos stebėjimui apsvarstykite lengvas alternatyvas, pvz., suplanuotas DMV momentines kopijas, saugomas stebėjimo duomenų bazėje, arba naudokite tik skaitymui skirtą maršrutizavimą, kad stebėtumėte antrines kopijas „Always On“ konfigūracijose.
7. Geriausia veiklos monitoriaus naudojimo praktika
Laikydamiesi geriausios praktikos, užtikrinsite maksimalią „Activity Monitor“ teikiamą naudą ir sumažinsite neigiamą poveikį savo serveriams.
7.1 Kada naudoti aktyvumo monitorių
Veiklos monitorius sužiba tam tikrose situacijose. Naudokite jį, kai jo stipriosios pusės atitinka jūsų poreikius.
7.1.1 Realiojo laiko našumo problemos
Veiklos stebėjimo priemonė idealiai tinka, kai vartotojai šiuo metu susiduria su problemomis ir jums reikia nedelsiant jas diagnozuoti. Realaus laiko rodinys padeda matyti, kas vyksta šiuo metu.
Kai gaunate pranešimą, kad „programa veikia lėtai“, vienas pirmųjų žingsnių turėtų būti „Activity Monitor“ atidarymas. Galite greitai nustatyti, ar duomenų bazė užimta, užblokuota ar nenaudojama.
7.1.2 Programos sulėtėjimo tyrimas
Kai konkreti programa nustoja reaguoti, veiklos monitorius padeda nustatyti, ar priežastis yra duomenų bazės problemos. Filtruokite procesų sritį pagal programos pavadinimą, kad matytumėte tik tos programos duomenų bazės veiklą.
Jei programa nerodo jokios duomenų bazės veiklos, o vartotojai praneša apie problemas, problema slypi kitur. Jei matote didelį blokavimą arba brangiai kainuojančias užklausas, radote kaltininką.
7.1.3 Greiti sveikatos patikrinimai
„Activity Monitor“ teikia puikią ataskaitų sritį, skirtą greitiems sveikatos patikrinimams įprastinio administravimo metu. Atidarykite ją, peržvelkite apžvalgos grafikus ir patikrinkite, ar nėra nieko neįprasto.
Šis paviršutiniškas patikrinimas trunka kelias sekundes ir gali atskleisti problemas, kol jos netapo kritinės. Įtraukite tai į savo kasdienybę.
7.2 Optimalūs konfigūracijos nustatymai
Tinkamai sukonfigūravus Veiklos monitorių, pagerėja jo naudingumas ir išteklių naudojimas.
7.2.1 Rekomenduojami atnaujinimo intervalai
Pritaikykite atnaujinimo intervalą prie savo tikslo:
- Aktyvus trikčių šalinimas: 10 sekundžių užtikrina gerą reagavimą su priimtinomis sąnaudomis.
- Išplėstinė stebėsena: 30–60 sekundžių sumažina serverio poveikį ilgesnių stebėjimo laikotarpių metu.
- Kritinės problemos diagnozė: 5 sekundės suteikia didelį detalumą, kai svarbi kiekviena sekundė, bet naudokite trumpai.
- Reguliarūs sveikatos patikrinimai: Rankinis atnaujinimas (1 valandos intervalas), kai aktyviai nežiūrite.
Baigę nepamirškite uždaryti Veiklos monitoriaus. Nustačius ilgą intervalą ir pamiršus apie jį, eikvojami serverio ištekliai.
7.2.2 Filtravimo strategijos
Naudokite filtrus, kad sutelktumėte dėmesį į svarbią informaciją ir sumažintumėte kognityvinę apkrovą:
- Filtruoti procesus pagal duomenų bazė matyti tik veiklą konkrečiose duomenų bazėse.
- Filtruoti pagal Prisijungti norint sekti konkretaus vartotojo veiklą.
- Filtruoti pagal Užduoties būsena = VEIKIA, kad paslėptumėte neveiklias sesijas.
- Filtruoti pagal taikymas izoliuoti srautą iš konkrečių programų.
- Rodyti tik „NonBlanks“ Užblokavo matyti tik blokuojančias situacijas.
7.2.3 Stulpelių pasirinkimas ir rūšiavimas
Sukurti sistemingą požiūrį į Veiklos monitoriaus duomenų peržiūrą:
- Start su apžvalga: Patikrinkite grafikus, ar nėra akivaizdžių šuolių ar anomalijų.
- Patikrinkite procesus, ar nėra blokavimo: Rūšiuokite pagal sesijos ID, tada ieškokite reikšmių „Užblokavo“.
- Peržiūrėti išteklių laukimo laiką: Rūšiuoti pagal bendrą laukimo laiką, kad būtų galima nustatyti išteklių kliūtis.
- Išanalizuokite brangias užklausas: Rūšiuokite pagal skirtingus rodiklius (CPU, vykdymus, skaitymus), kad rastumėte skirtingus problemų tipus.
- Patikrinkite naudodami įvesties / išvesties skydelį: Patvirtinkite, ar įvesties/išvesties reikalaujančios užklausos koreliuoja su dideliu disko aktyvumu.
7.3 Integracija su kitais įrankiais
„Activity Monitor“ geriausiai veikia kaip platesnio įrankių rinkinio dalis, o ne kaip atskiras sprendimas.
7.3.1 Naudojimas su SQL Server Profiler
Veiklos monitorius ir SQL Server Profileriai gerai papildo vienas kitą. Kai veiklos monitoriuje nustatote probleminę sesiją, spustelėkite ją dešiniuoju pelės mygtuku ir pasirinkite Sekimo procesas SQL Server Profiler.
Tai paleidžia „Profiler“ su filtrais, jau sukonfigūruotais fiksuoti tik to seanso veiklą. Matote visą įvykdytų sakinių seką, laiko informaciją ir klaidų pranešimus – išsamią informaciją, kurios nepateikia „Activity Monitor“.
Norėdami daugiau sužinoti apie SQL Server Profiliavimo galimybes ir pažangius sekimo metodus žr. mūsų išsamus SQL Server Profilerio vadovas.
7.3.2 Papildymas išplėstiniais renginiais
Išplėstiniai įvykiai siūlo mažai resursų reikalaujantį, išsamų stebėjimą, kuris fiksuoja informaciją, kurios „Activity Monitor“ nepastebi. Kurkite išplėstinių įvykių sesijas, kad galėtumėte stebėti konkrečius įvykius, pvz., aklavietes, ilgai trunkančias užklausas ar per didelį pakartotinį kompiliavimą.
Naudokite „Activity Monitor“ neatidėliotinam tyrimui, o „Extended Events“ – nuolatiniam stebėjimui ir istorinei analizei. Šios dvi priemonės skirtos skirtingiems poreikiams.
Norėdami daugiau sužinoti apie SQL Server Išplėstinės įvykių galimybės ir pažangios stebėjimo technikos, žr. mūsų išsamus SQL Server Išplėstinis renginių vadovas.
7.3.3 Trečiųjų šalių stebėjimo sprendimai
Komercinės priemonės, tokios kaip „SolarWinds“ duomenų bazių našumo analizatorius, „Redgate SQL Monitor“ ir „Quest Spotlight“, turi funkcijų, kurių trūksta „Activity Monitor“: įspėjimus, istorines tendencijas, pajėgumų planavimą ir automatinę diagnostiką.ostics.
Šie įrankiai yra vertingi „Activity Monitor“ papildymai, o ne pakaitalai. „Activity Monitor“ išlieka naudingas atliekant greitus patikrinimus ir tyrimus net ir tada, kai yra sudėtingų stebėjimo įrankių.
7.4 dažniausios klaidos, kurių reikia vengti
Suprasdami dažniausiai pasitaikančias „Activity Monitor“ klaidas, galėsite jį naudoti efektyviau.
7.4.1 Veiklos stebėjimo palikimas veikiančiam nuolat
Most Dažna klaida – atidaryti veiklos monitorių ir palikti jį veikti neribotą laiką. Tai eikvoja serverio išteklius ir suteikia mažai naudos, nes aktyviai nestebite.
Uždarykite veiklos monitorių, kai jo aktyviai nenaudojate. Jei reikia nuolatinio stebėjimo, įdiekite tinkamą stebėjimo sprendimą su suplanuotu duomenų rinkimu.
7.4.2 Pernelyg didelis pasikliovimas vien tik aktyvumo monitoriumi
Veiklos monitorius pateikia vieną serverio sveikatos perspektyvą. Nepasikliaukite vien juo. Papildykite jį „Windows Performance Monitor“, kad gautumėte OS lygio metriką, išplėstiniais įvykiais, kad gautumėte išsamų stebėjimą, ir vykdymo plano analize, kad galėtumėte derinti užklausas.
Veiklos monitorius padeda nustatyti problemas, tačiau joms išspręsti dažnai reikia papildomų įrankių ir gilesnės analizės.
Sužinokite daugiau apie SQL Server našumo monitorius mūsų Pilnas vadovas.
7.4.3 Istorinių tendencijų ignoravimas
Veiklos monitorius rodo dabartinę būseną, tačiau našumo problemos dažnai turi modelius, matomus tik laikui bėgant. Įdiekite istorinių duomenų rinkimą, kad galėtumėte palyginti dabartinius rodiklius su pradiniais rodikliais ir nustatyti tendencijas.
Neturėdami istorinio konteksto, galite nepastebėti, kad šiandieninis „įprastas“ procesoriaus naudojimas yra 30 % didesnis nei praėjusio mėnesio pradinis lygis, o tai rodo laipsnišką blogėjimą.
8. Veiklos monitoriaus problemų sprendimas
Kartais ir pačiame Veiklos monitoriuje kyla problemų. Žinojimas, kaip išspręsti šias problemas, padeda išvengti nusivylimo.
8.1 Veiklos monitorius neatsidaro arba nerodo jokių duomenų
Kai Veiklos monitorius atsidaro, bet rodo tuščius langus arba visai neatsidaro, tam gali būti kelios priežastys.
8.1.1 Leidimų problemos
Most Dažniausia Veiklos stebėjimo problemų priežastis yra nepakankami leidimai. Norėdami patikrinti ir išspręsti:
- Patikrinkite serverio lygio teises:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Jei negrąžinama jokių eilučių, jums trūksta „VIEW SERVER STATE“ leidimo.
- Paprašykite serverio administratoriaus suteikti leidimą:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - Uždarykite ir vėl atidarykite Veiklos monitorių, kai bus suteikti leidimai.
8.1.2 Versijų suderinamumo problemos
Naudojant seną versiją SQL Server „Management Studio“, kad prisijungtumėte prie naujesnės SQL Server versija gali sukelti veiklos stebėjimo trikčių. Įrankis gali nesuprasti naujų laukimo tipų arba sistemos rodinio stulpelių.
Visada naudokite SSMS versiją, kuri atitinka jūsų arba yra naujesnė. SQL Server versija. „Microsoft“ teikia naujausią SSMS kaip nemokamą atsisiuntimą atskirai nuo SQL Server Pati.
8.1.3 Ugniasienės ir tinklo problemos
Veiklos monitoriui reikalingas ryšys su SQL Server egzempliorius standartiniuose prievaduose (pagal numatytuosius nustatymus 1433). Jei galite prisijungti naudodami objektų naršyklę, bet veiklos monitorius neveikia, gali būti, kad užkardos taisyklės blokuoja konkrečius ryšius.
Įsitikinkite, kad jūsų klientas gali pasiekti SQL Server visuose reikiamuose prievaduose. Patikrinkite „Windows“ užkardą ir visas tinklo užkardas tarp kliento ir serverio.
8.2 Veiklos monitorius nuolat pristabdytas
Dažna problema, ypač SQL Server 2019 m. Veiklos monitorius paleidžiamas pristabdymo būsenoje ir atsisako tęsti.
8.2.1 Pauzės būsenos supratimas
Kai Veiklos monitorius pristabdomas, visuose langeliuose rodoma būsena „Pristabdyta“ su atnaujinimo mygtuku, kuris gali neveikti. Dėl to nematote jokios serverio veiklos.
Pristabdymo būsena paprastai atsiranda dėl leidimų problemų, nuotolinio ryšio apribojimų arba SSMS versijos klaidų, o ne dėl tyčinio pristabdymo veiksmo.
8.2.2 Dažniausios priežastys
Veiklos monitorius gali būti visiškai pristabdytas dėl:
- Trūksta PERŽIŪROS SERVERIO BŪSENOS leidimo naujesniuose polangiuose, pridėtuose neseniai SQL Server versijos
- Nuotoliniai ryšiai išjungti SQL Server pavyzdys
- Konkrečių sistemos užklausų autentifikavimo klaidos
- Klaidos konkrečiose SSMS versijose, ypač nuo 18.0 iki 18.3
- Ryšio problemos tarp kliento ir serverio
8.2.3 Sprendimo žingsniai
Norėdami išspręsti Veiklos stebėjimo pristabdymo būsenos problemas:
- Atnaujinti SSMS: Atsisiųskite ir įdiekite naujausią SQL Server „Management Studio“ versija iš „Microsoft“ svetainės. Vėlesnėse versijose buvo ištaisyta daug pristabdymo būsenos klaidų.
- Patikrinkite leidimus: Įsitikinkite, kad turite leidimus „PERŽIŪRĖTI SERVERIO BŪSENĄ“ ir „PERŽIŪRĖTI BET KĄ APIBRĖŽIMĄ“.
- Patikrinkite nuotolinius ryšius: Patikrinkite, ar SQL Server instancija leidžia nuotolinius ryšius:
EXEC sp_configure 'remote access';Jei reikšmė yra 0, paprašykite administratoriaus ją įjungti.
- Raiškatart SSMS: Kartais tiesiog uždarome visus langus ir grįžometarTing SQL Server „Management Studio“ išsprendžia problemą.
- Prisijungimas naudojant „Windows“ autentifikavimą: Jei naudojate SQL autentifikavimą, pabandykite naudoti „Windows“ autentifikavimą, nes jis kartais apeina su autentifikavimu susijusias pristabdymo problemas.
8.3 Našumo problemos naudojant veiklos monitorių
Jei pats Veiklos monitorius sulėtėja arba pablogina serverio našumą, reikia atlikti pakeitimus.
8.3.1 Stebėjimo išlaidų mažinimas
Norėdami sumažinti Veiklos monitoriaus poveikį:
- Padidinkite atnaujinimo intervalą iki 30 sekundžių arba 1 minutės.
- Uždarykite nenaudojamas sritis spustelėdami sutraukimo mygtuką.
- Kai sritys suskleistos, Veiklos monitorius neužklausia apie jas duomenų.
- Venkite vienu metu paleisti kelis „Activity Monitor“ egzempliorius.
- Kai aktyviai netiriate problemų, visiškai uždarykite Veiklos monitorių.
8.3.2 Alternatyvūs lengvesni stebėjimo metodai
Jei Veiklos stebėjimas jūsų aplinkai reikalauja per daug išteklių, apsvarstykite alternatyvas:
- Tiesioginė užklausa DMV: Rašykite konkrečias T-SQL užklausas, kurios gautų tik jums reikalingą informaciją.
- Naudokite sp_WhoIsActive: Ši saugoma procedūra yra labai optimizuota ir paprastai turi mažiau išlaidų nei „Activity Monitor“.
- Įgyvendinti mėginių ėmimą: Suplanuokite SQL agento užduotis, kurios reguliariais intervalais fiksuoja DMV duomenų momentines kopijas ir saugo rezultatus lentelėse vėlesnei analizei.
- Stebėti antrines kopijas: „Always On“ prieinamumo grupėse paleiskite veiklos monitorių su nuskaitomu antriniu, o ne pagrindiniu.
8.4 Netiksli arba trūkstama informacija
Kartais Veiklos monitorius rodo informaciją, kuri atrodo neteisinga arba nepilna.
8.4.1 Duomenų tikrinimas naudojant DMV
Kai Veiklos stebėjimo rezultatai atrodo įtartini, patikrinkite juos tiesiogiai užklausdami pagrindinius DMV. Pavyzdžiui, jei procesų srityje nerodomas joks blokavimas, bet vartotojai apie tai praneša, atlikite užklausą:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Jei ši užklausa rodo blokavimą, kurio „Activity Monitor“ praleido, patvirtinote ekrano problemą.
8.4.2 Duomenų atnaujinimo laiko supratimas
Atminkite, kad Veiklos monitorius rodo momentines kopijas. Užklausa, kuri buvo vykdoma tarp atnaujinimo intervalų, nebus rodoma naujausių brangių užklausų sąraše, nebent jos vykdymo planas liks talpykloje.
Panašiai laukimo statistika išteklių laukimų srityje atspindi susikaupimą nuo paskutinės momentinės kopijos. Greitai kintantys darbo krūviai gali rodyti skirtingus modelius kiekvieną kartą atnaujinant.
9. Pažangūs aktyvumo stebėjimo metodai
Patyrę duomenų bazių administratoriai naudoja „Activity Monitor“ sudėtingesniais būdais, kad išgautų kuo daugiau diagnostikos duomenų.ostic vertė.
9.1 Kelių sričių sujungimas pagrindinių priežasčių analizei
Tikroji „Activity Monitor“ galia išryškėja, kai susiejate informaciją keliose srityse, kad suprastumėte sudėtingas našumo problemas.
9.1.1 Laukimo koreliacija su procesais
Kai išteklių laukimo srityje rodoma ilga laukimo trukmė kategorijoje, naudokite procesų sritį, kad nustatytumėte, kuriuose seansuose vyksta šie laukimo laikai:
- Atkreipkite dėmesį į laukimo kategoriją su ilgu bendru laukimo laiku (pvz., „Užrakinti“).
- Perjunkite į procesų sritį.
- Rūšiuoti pagal Laukimo tipas grupuoti sesijas pagal jų dabartinį laukimo laiką.
- Ieškokite sesijų, kuriose rodomi laukimo tipai probleminėje kategorijoje.
- Tų sesijų metu išnagrinėkite Laukimo išteklius stulpelį, kad pamatytumėte, kurie duomenų bazės objektai yra susiję.
- Dešiniuoju pelės mygtuku spustelėkite ir pasirinkite Detalės kad pamatytumėte užklausos tekstą.
Ši koreliacija padeda pereiti nuo „laukia užrakinimo“ prie „ši konkreti užklausa laukia užrakinimo šioje lentelėje“.
9.1.2 Brangių užklausų susiejimas su įvesties/išvesties problemomis
Kai duomenų failo įvesties/išvesties srityje rodoma didelė disko veikla konkrečioje duomenų bazėje:
- Atkreipkite dėmesį, kurie duomenų bazės failai turi didelį MB/s skaitymo arba rašymo greitį.
- Perjungti į naujausias brangias užklausas.
- Rūšiuoti pagal Fizinių nuskaitymų/sek. siekiant nustatyti užklausas, kurios intensyviai skaito iš disko.
- Filtruoti arba vizualiai identifikuoti užklausas, vykdomas duomenų bazėje su dideliu įvesties/išvesties našumu.
- Patikrinkite tų užklausų vykdymo planus, ar nėra lentelių nuskaitymų ar trūkstamų indeksų, dėl kurių per daug įvesties/išvesties duomenų.
Ši kelių sričių analizė susieja simptomus (didelį disko įvesties/išvesties kiekį) su priežastimis (konkrečiomis neefektyviomis užklausomis).
9.2 Veiklos monitoriaus naudojimas pajėgumų planavimui
Nors „Activity Monitor“ nesaugo istorinių duomenų, galite juos strategiškai naudoti pajėgumų planavimui stebėti.
9.2.1 Didžiausio naudojimo modelių nustatymas
Stebėkite serverio veiklą skirtingu paros metu, kad nustatytumėte naudojimo modelius:
- Atidarykite Veiklos monitorių žinomomis piko darbo valandomis.
- Atkreipkite dėmesį į grafiko „Procesoriaus laikas“ didžiausias vertes.
- Užfiksuokite maksimalų laukiančių užduočių skaičių.
- Stebėkite paketinių užklausų skaičių per sekundę piko metu.
- Dokumentuokite užimčiausias duomenų bazes procesų srityje.
- Palyginimui pakartokite ne piko valandomis.
Jei piko metu procesoriaus laikas nuolat viršija 80 %, artėjate prie procesoriaus pajėgumų ribų. Panašiai, didėjantis laukimo laikas rodo didėjantį išteklių trūkumą.
9.2.2 Išteklių tendencijų analizė
Nors Veiklos monitorius rodo dabartinę būseną, galite jį naudoti atsitiktiniams tendencijų patikrinimams, įrašydami pagrindinius rodiklius laikui bėgant:
- Kiekvieną dieną tuo pačiu metu darykite apžvalgos srities ekrano kopijas
- Užrašykite didžiausias vertes iš kiekvieno grafiko
- Palyginkite savaitės rezultatus, kad nustatytumėte augimo tendencijas.
- Stebėkite laipsnišką vidutinio procesoriaus laiko arba įvesties / išvesties spartos didėjimą
Šis rankinis tendencijų nustatymas papildo sudėtingesnius stebėjimo sprendimus ir padeda pagrįsti pajėgumų išplėtimą.
9.3 Veiklos bazinių rodiklių dokumentavimas
Nustatant pagrindinius našumo rodiklius, lengviau atpažinti, kada našumas pablogėja.
9.3.1 Bazinių metrikų fiksavimas
Laikotarpiais, kai žinomas geras veikimas, dokumentuokite Veiklos monitoriaus metriką:
- Atidarykite Veiklos monitorių įprastos verslo veiklos metu (ne piko ar ne piko metu).
- Įrašų apžvalgos srities reikšmės:
- Tipinis procesoriaus laiko diapazonas (%)
- Vidutinis laukiančių užduočių skaičius
- Įprastas duomenų bazės įvesties/išvesties greitis
- Tipinis paketinių užklausų skaičius per sek.
- Pastaba. Išteklių laukimo srities kategorijos, kuriose rodomas most laukimo laikas.
- Dokumentuokite aktyvių procesų skaičių, paprastai esantį srityje „Procesai“.
- Įrašykite reprezentatyvius užklausų vykdymo rodiklius iš naujausių brangių užklausų.
Išsaugokite šią pagrindinę dokumentaciją, kad ateityje galėtumėte ja pasinaudoti, kai tirsite našumo problemas.
9.3.2 Dabartinio ir bazinio našumo palyginimas
Kilus našumo problemoms, palyginkite dabartinius „Activity Monitor“ rodmenis su dokumentuota bazine verte:
- Ar procesoriaus laikas yra žymiai ilgesnis nei bazinis? Sutelkite dėmesį į užklausas, kurios apkrauna procesorių intensyviai.
- Ar laukiančiųjų užduočių skaičius yra 2–3 kartus didesnis nei bazinis lygis? Ištirkite išteklių laukimo laiką.
- Ar įvesties/išvesties rodiklis yra gerokai didesnis? Patikrinkite duomenų failo įvesties/išvesties sritį ir brangias užklausas.
- Ar piko valandomis paketinių užklausų skaičius yra mažesnis nei bazinis? Ieškokite blokavimo ar ryšio problemų.
Šis palyginimas padeda nustatyti, kas pasikeitė, ir tinkamai sutelkti dėmesį į trikčių šalinimo veiksmus.
9.4 Pasirinktinių stebėjimo darbo eigų kūrimas
Sukurkite sistemingus darbo eigų procesus įprastiems tyrimo scenarijams, kad būtų užtikrinta išsami ir pakartojama analizė.
9.4.1 Žingsnis po žingsnio tyrimo procesas
Kai vartotojai praneša apie našumo problemas, laikykitės nuoseklaus darbo eigos:
- Greitas sveikatos patikrinimas: Atidarykite Veiklos monitorių ir nuskaitykite apžvalgos srities grafikus, ar nėra akivaizdžių anomalijų.
- Patikrinkite, ar nėra blokavimo: Išskleiskite sritį „Procesai“, filtruokite stulpelyje „Užblokavo“ pagal „NonBlanks“.
- Nustatykite išteklių ginčą: Peržiūrėti išteklių laukimo sritį, surūšiuotą pagal laukimo laiką.
- Raskite brangias užklausas: Išnagrinėkite naujausias brangias užklausas, surūšiuotas pagal procesorių, tada vykdymus, tada skaitymus.
- Koreliuoti įvesties / išvesties šablonus: Kryžminės nuorodos brangioms užklausoms su duomenų failo įvesties/išvesties srities veikla.
- Dokumento išvados: Darykite ekrano kopijas ir įrašykite atitinkamus seanso ID, laukimo tipus ir užklausos informaciją.
- Gilus nardymas: Naudokite profiliavimo sekimus, vykdymo plano analizę ir DMV užklausas, kad išsamiai ištirtumėte nustatytas problemas.
9.4.2 Eskalavimo kriterijai
Nustatykite kriterijus, kada problemas reikia eskaluoti, o kada tęsti tyrimą:
- Nedelsiant kreipkitės į: Blokavimo grandinės trunka ilgiau nei 5 minutes, procesoriaus laikas 100 % ilgiau nei 2 minutes, svarbūs sistemos procesai rodo būseną SUSTABDYTA.
- Eskaluoti su analize: Pasikartojančios brangios užklausos, sunaudojančios >50 % procesoriaus resursų, nuolatinis didelis įvesties/išvesties atsako laikas >50 ms, nuolatiniai atminties suteikimo gedimai.
- Ištirkite toliau: LaikasrarLaukiama, kol bus išspręsta per kelias minutes, užklausos su neoptimaliais planais, bet priimtinu našumu, nedidelis blokavimas, trunkantis <30 sekundžių.
10. Veiklos monitorius skirtingose vietose SQL Server versijos
Veiklos monitorius vystėsi visoje SQL Server versijos, kiekviena versija atnešdama patobulinimų ir kartais naujų problemų.
10.1 Veiklos monitorius SQL Server 2008 ir naujesnės versijos
SQL Server 2008 m. buvo pristatytas modernus „Activity Monitor“ dizainas, kuris iki šiol iš esmės nepakito.
Pristatytos 10.1.1 naujos funkcijos SQL Server 2008
Geriausios SQL Server 2008 m. atnaujintas veiklos monitoriaus dizainas atnešė reikšmingų patobulinimų:
- Grafinis prietaisų skydelis su realaus laiko diagramomis apžvalgos srityje
- Išskleidžiamo / sulankstomo lango sąsaja, pakeičianti senąjį tik tinklelio rodinį
- Naujausių brangių užklausų sritis, kurioje rodomi apibendrinti užklausų našumo duomenys
- Duomenų failų įvesties/išvesties sritis, skirta stebėti kiekvieno failo disko aktyvumą
- Patobulinta išteklių laukimo sritis su laukimo kategorizavimu
- Dešiniuoju pelės mygtuku spustelėkite kontekstinius meniu, skirtus procesų veiksmams, pvz., sesijų nutraukimui ir „Profiler“ paleidimui
- Konfigūruojami atnaujinimo intervalai nuo 1 sekundės iki 1 valandos
Šie pakeitimai „Activity Monitor“ iš paprasto procesų sąrašo pavertė išsamia stebėjimo ataskaitų suvestine.
10.1.2 Pakeitimai nuo SQL Server 2005
SQL Server 2005 m. veiklos monitorius buvo daug labiau ribotas:
- Pasiekiama per objektų naršyklės aplanką „Valdymas“, o ne per įrankių juostą
- Vienas tinklelis, kuriame rodomas procesų sąrašas su pagrindine informacija
- Jokių grafinių diagramų ar kelių sričių
- Jokių brangių užklausų ar įvesties/išvesties stebėjimo
- Ribota laukimo statistikos informacija
2008 m. pertvarkymas buvo visiškas permąstymas, o ne laipsniškas patobulinimas.
10.2 Veiklos monitorius SQL Server 2014/2016
SQL Server 2014 ir 2016 metais buvo atlikti laipsniški „Activity Monitor“ duomenų rinkimo patobulinimai, tačiau vizualiai pakeista nedaug.
10.2.1 Patobulinimai ir papildymai
Svarbiausi šių versijų patobulinimai:
- Geresnis našumas stebint serverius su tūkstančiais talpykloje saugomų planų
- Patobulintos filtravimo galimybės procesų srityje
- Patobulintas laukimo statistikos agregavimo tikslumas
- Geresnis stulpelių rūšiavimo ir filtravimo tvarkymas naudojant didelius rezultatų rinkinius
- Efektyvesnės DMV užklausos, mažinančios stebėjimo išlaidas
Pagrindinė sąsaja išliko nuosekli SQL Server 2008 m., išlaikant administratorių susipažinimą.
10.3 Veiklos monitorius SQL Server 2019/2022
naujas SQL Server versijos tęsia „Activity Monitor“ evoliuciją, daugiausia dėmesio skiriant našumui ir stabilumui.
10.3.1 Naujausios funkcijos ir galimybės
SQL Server 2019 ir 2022 m. veiklos monitoriuje pateikiama:
- Šiose versijose pristatytų naujų laukimo tipų palaikymas
- Patobulintas vaizdavimo našumas SSMS naudojant WPF technologiją
- Geresnis didelio skaičiaus aktyvių sesijų valdymas
- Patobulintas suderinamumas su debesies SQL platformomis
- Tikslesni procesoriaus ir įvesties / išvesties rodikliai
10.3.2 Žinomos problemos naujausiose versijose
SQL Server 2019 m. buvo pristatyta keletas „Activity Monitor“ klaidų:
- Nuolatinė pristabdymo būsena: Veiklos monitorius dažnai pristabdomas ir neatnaujinamas, ypač SSMS 18.0–18.3 versijose. Ištaisyta vėlesnėse SSMS versijose.
- Nuotolinio ryšio sutrikimai: Kai kurios konfigūracijos neleidžia atidaryti veiklos monitoriaus nuotoliniuose egzemplioriuose. Sprendimai apima konkrečių sekimo žymų įjungimą arba naujesnių SSMS kompiliacijų naudojimą.
- Leidimų problemos: Naujiems sistemos rodiniams reikalingi papildomi leidimai, kurie nėra aiškiai dokumentuoti, todėl net ir naudojant „VIEW SERVER STATE“ rodomi tušti ekranai.
Dirbdami su visada naudokite naujausią SSMS versiją SQL Server 2019 ir 2022 m., siekiant išvengti šių problemų.
11. Praktiniai naudojimo atvejai ir pavyzdžiai
Realūs pavyzdžiai iliustruoja, kaip efektyviai taikyti „Activity Monitor“ dažniausiai pasitaikančiuose trikčių šalinimo scenarijuose.
11.1 Atvejo analizė: lėtos žiniatinklio programos diagnostika
Kūrimo komanda praneša, kad jų žiniatinklio programa tapo nepriimtinai lėta – puslapių įkėlimas trunka 20–30 sekundžių, o ne įprastas 2–3 sekundes.
11.1.1 Pradinis tyrimas su apžvalgos sritimi
Atidarykite Veiklos monitorių ir peržiūrėkite apžvalgos sritį:
- Grafike „% Procesoriaus laikas“ rodoma 85–95 % procesoriaus apkrovos, kuri yra gerokai didesnė nei įprasta 30–40 % pradinė vertė.
- Laukiančių užduočių skaičius svyruoja nuo 10 iki 20, palyginti su įprastu 0–3 pradiniu rodikliu.
- Duomenų bazės įvesties/išvesties aktyvumas yra vidutinis – apie 50 MB/s.
- Paketinių užklausų skaičius per sekundę yra mažesnis nei tikėtasi – 100/s, palyginti su įprastu 300–400/s darbo valandomis.
Šis modelis rodo procesoriaus spūstį, dėl kurios išteklių konkurencija sumažina pralaidumą. Serveris dirba daug, bet neapdoroja daug užklausų.
11.1.2 Probleminės užklausos nustatymas
Išskleiskite sritį „Naujausios brangios užklausos“ ir rūšiuokite pagal vykdymų skaičių/min.:
- Viršutinė užklausa rodo 15 000 vykdymų per minutę.
- Dešiniuoju pelės mygtuku spustelėkite ir pasirinkite Redaguoti užklausos tekstą kad išnagrinėtumėte užklausą.
- Užklausa yra paprastas SELECT sakinys, nuskaitantis vieną vartotojo įrašą:
SELECT * FROM Users WHERE UserId = @UserId. - Įprastai naudojant programą, ši užklausa neturėtų būti vykdoma 15 000 kartų per minutę.
Dešiniuoju pelės mygtuku spustelėkite užklausą ir pasirinkite Rodyti vykdymo planąPlane rodoma lentelės „Vartotojai“ nuskaitymas su įspėjimu apie trūkstamą indeksą stulpelyje „Vartotojo ID“.
Filtruokite procesų sritį pagal programą, kad būtų rodomi tik žiniatinklio programos ryšiai. Keli seansai rodo tą pačią užklausą, kuri vykdoma pakartotinai.
11.1.3 Sprendimas ir patikrinimas
Problema kyla dėl dviejų priežasčių: per didelio užklausų vykdymų skaičiaus ir trūkstamo indekso. Sprendimo veiksmai:
- Sukurkite trūkstamą indeksą:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Susisiekite su kūrimo komanda dėl per didelio vykdymų skaičiaus. Tyrimas atskleidžia N+1 užklausos problemą programos kode, kur ciklas nuskaito vartotojo duomenis kiekvienam sąrašo elementui.
- Modifikuoti programą sujungti vartotojo paieškas į vieną užklausą naudojant IN sąlygą arba lentelės reikšmių parametrą.
- Patikrinkite pataisą stebint veiklos monitorių po diegimo. CPU naudojimas sumažėja iki 35–40 %, vykdymo dažnis per minutę sumažėja iki 200–300, o programų atsako laikas grįžta į įprastą būseną.
11.2 Atvejo analizė: blokavimo problemos sprendimas
Vartotojai praneša, kad užsakymų įvedimo sistema periodiškai užstringa 30–60 sekundžių, prieš atnaujindama įprastą veikimą.
11.2.1 Blokuojančios grandinės aptikimas
Vieno iš šių užstrigimo įvykių metu atidarykite Veiklos monitorių ir išskleiskite sritį Procesai:
- Rūšiuoti pagal Sesijos ID kad matytumėte visus sutvarkytus užsiėmimus.
- Keli seansai rodo vertes Užblokavo stulpelis, visi rodantys į sesijos ID 73.
- 73 sesijoje rodomas skaičius „1“. Galvos blokatorius stulpelį, patvirtinantį, kad tai yra pagrindinė priežastis.
- Geriausios Laukimo tipas Užblokuotų sesijų atveju rodomas LCK_M_X, nurodantis, kad jos laukia išskirtinio užrakto.
- Geriausios Laukimo išteklius stulpelis rodo, kad blokavimas yra lentelėje „Užsakymai“.
11.2.2 Priežasties analizė
Dešiniuoju pelės mygtuku spustelėkite 73 sesiją ir pasirinkite Detalės norėdami peržiūrėti komandą:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
Šis atnaujinimas yra paketinio apdorojimo užduoties, vykdomos kas valandą, dalis. Tikrinama Prisijungti stulpelis patvirtina, kad seansas priklauso paketinio apdorojimo paslaugos paskyrai.
Užklausa laiko užraktus lentelėje „Užsakymai“, kol apdoroja tūkstančius užsakymų. Laukimo laikas blokuotų seansų skaičius nuolat didėja, patvirtindamas, kad problema yra ši ilgai trunkanti operacija.
11.2.3 Pataisos įdiegimas
Trumpalaikis sprendimas:
- Dokumento 73 sesijos informacija, įskaitant užklausos tekstą ir trukmę.
- Leiskite atnaujinimui baigtis natūraliai, nes tai teisėtas paketinis apdorojimas.
- Baigę patikrinkite, ar užblokuotos sesijos yra išvalytos ir ar įprastas veikimas atnaujintas.
Įgyvendinti ilgalaikiai sprendimai:
- Perplanuoti paketinę užduotį vykdyti ne piko valandomis (nuo 2 iki 4 val., o ne darbo valandomis).
- Pakeisti paketinį apdorojimą atnaujinti užsakymus mažesnėmis partijomis po 100 įrašų vienu metu, atlaisvinant užraktus tarp partijų.
- Pridėti indeksą stulpelyje „OrderId“, kad pagreitintumėte atnaujinimo operaciją.
- Apsvarstykite SNAPSHOT izoliaciją skaitymo operacijoms, siekiant sumažinti blokavimo poveikį.
11.3 Atvejo analizė: perteklinių užklausų vykdymų nustatymas
Duomenų bazės stebėjimas rodo, kad per pastarąjį mėnesį procesoriaus naudojimas palaipsniui didėjo, tačiau programos kode akivaizdžių pokyčių neįvyko.
11.3.1 Nenormalių vykdymų skaičiaus nustatymas
Atidarykite Veiklos monitorių ir peržiūrėkite sritį Naujausios brangios užklausos:
- Rūšiuoti pagal Vykdymų skaičius/min. pamatyti m.ost dažnai vykdomos užklausos.
- Populiariausia užklausa rodo 37 000 vykdymų per minutę – daug daugiau nei bet kuri kita užklausa.
- Dešiniuoju pelės mygtuku spustelėkite ir pasirinkite Redaguoti užklausos tekstą.
- Užklausa gauna informaciją apie produkto kategoriją:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - Ši paprasta užklausa turėtų būti greita ir talpinama, tačiau ji vykdoma dešimtis tūkstančių kartų per minutę.
11.3.2 Sekimas iki programos kodo
Procesų srityje raskite sesijas, vykdančias šią užklausą:
- Pastaba taikymas stulpelyje rodoma „ProductCatalogService“.
- Dešiniuoju pelės mygtuku spustelėkite vieną iš šių sesijų ir pasirinkite Sekimo procesas SQL Server Profiler.
- „SQL Profiler“ rodo, kad užklausa vykdoma pakartotinai greitai iš eilės su skirtingomis „CategoryId“ reikšmėmis.
- Dėl kodo peržiūros susisiekite su „ProductCatalogService“ kūrimo komanda.
Kodo peržiūra atskleidžia problemą: neseniai atliktas pakeitimas nuskaito produktų sąrašus su kategorijomis. Kiekvienam rezultatų rinkinio produktui (dažnai daugiau nei 1,000 produktų) kodas atlieka atskirą duomenų bazės iškvietimą, kad gautų informaciją apie kategorijas – tai klasikinė N+1 užklausos problema.
11.3.3 Programos optimizavimas
Įdiekite tinkamą taisymą:
- Modifikuoti programos užklausą norint naudoti JOIN, kuris viename duomenų bazės iškvietime nuskaito produktus ir jų kategorijas:
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; - Įdiekite atnaujintą kodą ir stebėti veiklos monitorių.
- Patikrinkite pataisą: Kategorijos užklausos vykdymų skaičius per minutę sumažėja nuo 37 000 iki mažiau nei 100, o bendras procesoriaus naudojimas sumažėja 40 %.
- Dokumentuokite išmoktą pamoką ir pasidalykite su kūrimo komanda, kad išvengtumėte panašių problemų ateityje keičiant kodą.
12. Aptikti galimą duomenų bazės sugadinimą
Nors Veiklos monitorius nėra specialiai sukurtas duomenų bazės pažeidimams aptikti, tam tikri jo rodymo modeliai gali rodyti pagrindines pažeidimo problemas, kurias reikia ištirti toliau.
12.1 Galimo duomenų bazės sugadinimo simptomai
Jei duomenų bazė yra sugadinta ir prie jos prisijungiama, kartais galite matyti:
1. Procesų srityje:
- Seansai įstrigo SUSTABDYTOJE būsenoje su neįprastais laukimo tipais
- Procesai, rodantys klaidų būsenas
- Užklausos pakartotinai nepavyksta
2. Išteklių laukimo srityje:
- Neįprasti su įvesties / išvesties procesais susiję laukimo tipai, kurie gali rodyti disko problemas (nors tai labiau tikėtina, kad rodo aparatinės įrangos problemas, o ne loginius gedimus)
3. Naujausiose brangiose užklausose:
- Užklausos su neįprastai dideliu fizinių nuskaitymų skaičiumi, jei jos pakartotinai bando nuskaityti sugadintus puslapius
12.2 Tolesnis patikrinimas naudojant DBCC CHECKDB
Kai Veiklos monitorius rodo simptomus, rodančius galimą duomenų sugadinimą, turėtumėte nedelsdami paleisti DBCC CHECKDB, kad patikrintumėte duomenų bazės vientisumą. Ši komanda nuskaito visus duomenų bazės puslapius, patikrina kontrolines sumas ir ieško loginio nuoseklumo klaidų.
Norėdami sužinoti daugiau apie tai, kaip naudoti DBCC CHECKDB duomenų bazės pažeidimams patikrinti ir ištaisyti, žr. mūsų išsamus DBCC CHECKDB vadovas.
12.3 Remontas naudojant profesionalius įrankius
Jei DBCC CHECKDB patvirtina duomenų bazės sugadinimą, turite kelias taisymo parinktis:
- Pageidaujamas būdas yra atkurti duomenis iš žinomos, geros atsarginės kopijos. Žr. mūsų išsamus vadovas, kaip sukurti atsargines kopijas ir atkurti duomenis SQL Server duomenų bazės.
- Nedidelio pažeidimo atveju problemas gali išspręsti DBCC CHECKDB su REPAIR_REBUILD.
- Svarbiausioms duomenų bazėms be neseniai sukurtų atsarginių kopijų – profesionalus SQL atkūrimo programinė įranga ir paslaugos dažnai gali atkurti duomenis, kurių negali atkurti integruotos taisymo parinktys.
13. Išvada
SQL Server Veiklos monitorius yra neįkainojama priemonė duomenų bazių administratoriams, teikianti tiesiogines įžvalgas apie serverio našumą ir padedanti greitai bei efektyviai diagnozuoti problemas.
13.1 Pagrindinių punktų santrauka
Šiame vadove nagrinėjome, kaip Veiklos monitorius padeda suprasti ir šalinti triktis SQL Server spektaklis:
- Veiklos monitorius teikia realiuoju laiku matomumą į procesus, laukimus, užklausas ir įvesties/išvesties operacijas per sutvarkytą grafinę sąsają.
- Penkios sritys – Apžvalga, Procesai, Išteklių laukimai, Duomenų failų įvestis/išvestis ir Naujausios brangios užklausos – kiekviena siūlo unikalią serverio veiklos perspektyvą.
- Įprasti trikčių šalinimo scenarijai, tokie kaip per didelis užklausų vykdymas, blokuojančios grandinės ir didelis procesoriaus naudojimas, tampa valdomi sistemingai tiriant veiklą.
- Nors ir galingas, „Activity Monitor“ turi apribojimų, įskaitant istorinių duomenų trūkumą, laukimo tipo grupavimą ir stebėjimo išlaidas, kurios turi įtakos jo taikymui.cabtinkamumas.
- Papildant Veiklos monitorių DMV užklausomis, „sp_WhoIsActive“, „Extended Events“ ir potencialiai trečiųjų šalių įrankiais, sukuriama išsami stebėjimo strategija.
- Laikantis geriausios atnaujinimo intervalų praktikos, uždarius nenaudojamą Veiklos monitorių ir sujungus kelis langus koreliacijai, maksimaliai padidinama jo vertė ir sumažinamas poveikis.
13.2 Veiklos monitorius kaip jūsų įrankių rinkinio dalis
Veiklos stebėjimo priemonė turėtų būti jūsų pirmasis reagavimo įrankis atliekant našumo tyrimus, o ne vienintelis. Jos stiprybė yra ta, kad ji suteikia tiesioginį matomumą aktyvaus trikčių šalinimo metu, padeda greitai nustatyti, ar duomenų bazė yra kliūtis, ir nustatyti, kuriuos konkrečius aspektus reikia išsamiau ištirti.
Įsivaizduokite, kad aktyvumo monitorius yra panašus į automobilio prietaisų skydelį – jis iš karto praneša, jei kažkas negerai, ir padeda nustatyti bendrą susirūpinimą keliančią sritį. Kaip automobilio prietaisų skydelis tiksliai nenurodo, kodėl užsidegė variklio patikros lemputė, aktyvumo monitorius nurodo problemas, ne visada atskleisdamas visos jų priežasties. Tokiai gilesnei analizei atlikti reikia papildomų įrankių ir patirties.
Integruokite „Activity Monitor“ į platesnį įrankių rinkinį, apimantį vykdymo plano analizę, laukimo statistikos stebėjimą, istorinius stebėjimo sprendimus ir geriausią našumo praktiką. Naudokite jį kartu su tinkamomis indeksavimo strategijomis, užklausų optimizavimo metodais ir pajėgumų planavimu.
13.3 Mokymosi kelionės tęsimas
Įvaldyti „Activity Monitor“ yra tik vienas žingsnis siekiant tapti efektyviu duomenų bazių administratoriumi. Toliau tobulinkite savo įgūdžius:
- Mokymasis interpretuoti vykdymo planus ir nustatyti neefektyvias operacijas
- Supratimas SQL Server laukimo statistika ir jos reikšmė
- Indeksų kūrimo ir optimizavimo metodų studijavimas
- Exploring SQL Serverarchitektūra ir kaip ji apdoroja užklausas
- Sistemingų trikčių šalinimo metodų taikymas
- Patirties kaupimas naudojant išplėstinius įvykius išsamiam sekimui
- Operacijų izoliacijos lygių ir jų poveikio našumui supratimas
Kiekvienas našumo tyrimas naudojant „Activity Monitor“ išmoko kažko naujo apie tai, kaip SQL Server veikia ir kaip programos sąveikauja su duomenų bazėmis. Dokumentuokite savo išvadas, dalinkitės žiniomis su kolegomis ir sukurkite bibliotekąrarsprendimų dažniausiai pasitaikančioms problemoms.
13.4 Papildomi ištekliai
Išplėskite savo žinias naudodamiesi šiais vertingais ištekliais:
- Atidarykite „Activity Monitor“. SQL Server Valdymo studija (SSMS)
: Oficialus SQL Server dokumentaciją, kaip atidaryti veiklos monitorių SQL Server Valdymo studija (SSMS).
- Activity Monitor
: Oficialus SQL Server dokumentą apie tai, kaip naudoti Veiklos monitorių.
14. Dažnai užduodami klausimai (DUK)
Klausimas: kas yra SQL Server Veiklos stebėjimo priemonė?
A: SQL Server Veiklos monitorius yra integruotas įrankis SQL Server „Management Studio“, kuri rodo realiuoju laiku informaciją apie kompiuteryje vykstančius procesus SQL Server egzempliorius ir jų poveikis serverio ištekliams. Jame pateikiamas grafinis prietaisų skydelis su penkiais langais, rodančiais skirtingus serverio veiklos aspektus, įskaitant procesoriaus naudojimą, laukiančias užduotis, įvesties / išvesties dažnius, aktyvius seansus ir brangias užklausas.
K: Kaip atidaryti veiklos monitorių SSMS?
A: Veiklos monitorių galite atidaryti keturiais būdais: (1) SSMS įrankių juostoje spustelėkite Veiklos monitoriaus piktogramą, (2) Dešiniuoju pelės mygtuku spustelėkite savo SQL Server egzemplioriaus pavadinimas objektų naršyklėje ir pasirinkite Activity Monitor, (3) Paspauskite "Ctrl" + Kitas + Aarba (4) sukonfigūruokite SSMS, kad ji būtų paleista automatiškai per Ištekliai -> Nustatymai -> aplinka -> Starvamzdis.
K: Kokių leidimų man reikia norint naudoti Veiklos monitorių?
A: Jums reikia PERŽIŪRĖTI SERVERIO BŪSENĄ leidimas pamatyti m.ost Veiklos stebėjimo informacija. Duomenų failo įvesties/išvesties sričiai taip pat reikės KURTI DUOMENŲ BAZĘ, KEISTI BET KOKĮ DUOMENŲ BAZĘarba PERŽIŪRĖTI BET KURĮ APIBRĖŽIMĄ leidimus. Be šių leidimų Veiklos monitorius gali atsidaryti, bet rodyti tuščius langus.
K: Kodėl mano aktyvumo monitorius yra pristabdytas arba neveikia?
A: Veiklos stebėjimas paprastai pristabdomas dėl leidimų problemų, pasenusių SSMS versijų arba išjungtų nuotolinių ryšių. Norėdami išspręsti: (1) Atnaujinkite į naujausią SSMS versiją, (2) Įsitikinkite, kad turite leidimą PERŽIŪRĖTI SERVERIO BŪSENĄ, (3) Patikrinkite, ar įrenginyje įjungti nuotoliniai ryšiai. SQL Server pavyzdžiui, (4) Rez.tart SSMS ir (5) Jei taikoma, pabandykite prisijungti naudodami „Windows“ autentifikavimą, o ne SQL autentifikavimą.cabjuos.
K: Kuo skiriasi Veiklos monitorius ir „sp_WhoIsActive“?
A: „Activity Monitor“ yra grafinis įrankis, integruotas į SSMS, teikiantis organizuotas sritis įvairiems stebėjimo aspektams. „sp_WhoIsActive“ yra nemokama bendruomenės sukurta saugoma procedūra, kuri pateikia išsamią seanso informaciją viename rezultatų rinkinyje su konkretesniais laukimo tipais, blokavimo informacija ir tinkinimo parinktimis nei „Activity Monitor“. „Activity Monitor“ geriau tinka vizualiai tyrinėti, o „sp_WhoIsActive“ puikiai tinka scenarijų pagrindu vykdomam stebėjimui ir pateikia išsamesnę informaciją.
K: Ar Veiklos monitorius turi įtakos serverio našumui?
A: Taip, Veiklos stebėjimo priemonė turi išmatuojamų išlaidų, nes ji užklausia sistemos DMV kiekvienu atnaujinimo intervalu. Poveikis didėja esant mažesniems atnaujinimo dažniams – „Microsoft“ įspėja, kad intervalai, trumpesni nei 10 sekundžių, gali turėti įtakos serverio našumui. Visada uždarykite Veiklos stebėjimo priemonę, kai jos aktyviai nenaudojate, ir apsvarstykite 30–60 sekundžių atnaujinimo intervalus gamybiniuose serveriuose, kurie yra labai apkrauti.
K: Ar galiu gauti veiklos stebėjimo duomenis naudodamas T-SQL?
A: Taip, veiklos monitorius pateikia užklausas sistemos dinaminio valdymo rodiniams, pvz., sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats ir sys.dm_exec_query_stats. Galite tiesiogiai pateikti užklausas šiems DMV naudodami T-SQL, kad programiškai gautumėte lygiavertę informaciją, įgalindami pasirinktinius stebėjimo scenarijus ir automatizuotą duomenų rinkimą.
K: Koks yra numatytasis atnaujinimo intervalas?
A: Numatytasis atnaujinimo intervalas yra 10 sekundžių. Tai galite pakeisti dešiniuoju pelės mygtuku spustelėdami bet kurioje apžvalgos srities vietoje ir pasirinkdami Atnaujinimo intervalasir pasirinkdami iš anksto nustatytų parinkčių: 1 sekundė, 5 sekundės, 10 sekundžių, 30 sekundžių, 1 minutė arba 1 valanda. Trumpesni intervalai suteikia daugiau realaus laiko rodinių, tačiau padidina stebėjimo išlaidas.
K: Kaip automatiškai atidaryti veiklos monitorių SSMS sistemoje?tartup?
A: Automatinio paleidimo konfigūravimas naudojant SSMS parinktis: Eikite į Ištekliai -> Nustatymai -> aplinka -> Starvamzdis, Tada pasirinkite Atidaryti objektų naršyklę ir veiklos monitorių nuo Tuo starvamzdis išskleidžiamasis meniu. Veiklos monitorius bus automatiškai atidarytas kiekvieną kartą, kai prisijungsite prie serverio SSMS.
K: Kokie yra Veiklos monitoriaus apribojimai?
A: Pagrindiniai apribojimai: (1) nėra istorinių duomenų saugojimo ar tendencijų rodymo galimybių, (2) laukimo tipai grupuojami į kategorijas, o ne rodomi konkrečiai, (3) kai kurie laukimo tipai, pvz., CXPACKET, gali būti nerodomi, (4) tam tikro laiko momentinėse kopijose gali nebūti trumpalaikių problemų, (5) stebėjimo išlaidos gali paveikti užimtus serverius, (6) nėra įspėjimo mechanizmo aktyviam stebėjimui ir (7) negalima kaupti duomenų keliuose serveriuose SQL Server egzemplioriai. Šiems poreikiams papildykite „Activity Monitor“ išplėstiniais įvykiais, duomenų rinkimo rinkiniais arba trečiųjų šalių stebėjimo įrankiais.
Apie Autorius:
Yuan Sheng yra vyresnysis duomenų bazių administratorius (DBA), turintis daugiau nei 10 metų patirtį SQL Server aplinkose ir įmonių duomenų bazių valdyme. Jis sėkmingai išsprendė šimtus duomenų bazių atkūrimo scenarijų finansinių paslaugų, sveikatos priežiūros ir gamybos organizacijose.
Yuan specializuojasi SQL Server duomenų bazių atkūrimas, didelio prieinamumo sprendimai ir našumo optimizavimas. Jo didelė praktinė patirtis apima kelių terabaitų duomenų bazių valdymą, „Always On Availability Groups“ diegimą ir automatizuotų atsarginių kopijų kūrimo bei atkūrimo strategijų, skirtų kritiškai svarbioms verslo sistemoms, kūrimą.
Pasitelkdamas savo technines žinias ir praktinį požiūrį, Yuanas daugiausia dėmesio skiria išsamių vadovų, padedančių duomenų bazių administratoriams ir IT specialistams spręsti sudėtingas problemas, kūrimui. SQL Server efektyviai meta iššūkius. Jis neatsilieka nuo naujausių žinių SQL Server leidimus ir besivystančias „Microsoft“ duomenų bazių technologijas, reguliariai testuodamas atkūrimo scenarijus, siekdamas užtikrinti, kad jo rekomendacijos atitiktų geriausią realią praktiką.
Turite klausimų apie SQL Server atkūrimo ar reikia papildomų duomenų bazės trikčių šalinimo nurodymų? Yuan mielai atsiliepimai ir pasiūlymai už šių techninių išteklių tobulinimą.


















