1. Uvod
1.1 Što je SQL Server Monitor aktivnosti?
SQL Server Monitor aktivnosti je ugrađeni dijagnostički alat unutar SQL Server Management Studio koji prikazuje informacije o SQL Server procese i njihov utjecaj na performanse poslužitelja. Omogućuje vam praćenje SQL Server procese, praćenje čekanja resursa, analiziranje skupih upita i promatranje obrazaca ulazno/izlaznih operacija – sve s jednog sučelja.
1.2 Zašto koristiti SQL Server Monitor aktivnosti?
Monitor aktivnosti služi kao vaša prva linija obrane prilikom rješavanja problema s performansama. Pruža trenutni uvid u ono što se događa na vašem SQL Server instancu bez potrebe za složenim T-SQL upitima ili alatima trećih strana.
Alat se ističe u brzom prepoznavanju uobičajenih problema poput blokiranja sesija, upita koji intenzivno koriste CPU, prekomjernog izvršavanja upita i uskih grla u ulazno/izlaznim operacijama. Kada korisnici prijave da je aplikacija spora ili ne reagira, Activity Monitor pomaže vam utvrditi je li krivac poslužitelj baze podataka.
Za administratore baza podataka koji ne rade s SQL Server Svakodnevno, Activity Monitor nudi pristupačnu početnu točku za razumijevanje aktivnosti poslužitelja. Čak ga i iskusni administratori baza podataka koriste kao početnu točku za istraživanje performansi.
1.3 Praćenje aktivnosti u usporedbi s drugim alatima za praćenje
Iako je Monitor aktivnosti vrijedan, važno je razumjeti kako se uspoređuje s drugim opcijama praćenja:
Monitor aktivnosti u odnosu na sp_WhoIsActive: Monitor aktivnosti pruža grafičko sučelje s više okvira, dok je sp_WhoIsActive sveobuhvatna pohranjena procedura koja nudi detaljnije informacije u jednom skupu rezultata. sp_WhoIsActive prikazuje specifične vrste čekanja koje Monitor aktivnosti grupira i pruža detaljnije informacije o blokiranju.
Monitor aktivnosti u odnosu na sp_who2: Tradicionalna naredba sp_who2 prikazuje osnovne informacije o sesiji, ali Activity Monitor ide dalje prikazujući statistiku čekanja, skupe upite i I/O metrike u organiziranom, vizualnom formatu.
Monitor aktivnosti u odnosu na alate trećih strana: Komercijalna rješenja za praćenje poput SolarWinds Database Performance Analyzera nude povijesno praćenje, upozorenja i naprednu analitiku koju nema Activity Monitor. Međutim, Activity Monitor ne zahtijeva dodatne troškove ili instalaciju.
1.4 Ključne prednosti za administratore baza podataka
Monitor aktivnosti nudi nekoliko prednosti koje ga čine bitnim alatom za upravljanje bazama podataka:
- Nulti trošak: Kao ugrađeni SQL Server Funkcija Management Studio, ne zahtijeva licencnu naknadu niti napor za implementaciju.
- Praćenje u stvarnom vremenu: Pratite trenutnu aktivnost poslužitelja u trenutku, s podesivim intervalima osvježavanja od 1 sekunde do 1 sata.
- Integrirane akcije: Desnim klikom miša na procese zaustavite sesije, pregledate detalje upita ili pokrenete SQL Server Tragovi profilera - sve iz alata.
- Višestruke perspektive: Pogledajte stanje poslužitelja iz različitih kutova putem pet specijaliziranih panela, od kojih se svaki fokusira na specifične aspekte performansi.
- Brzo rješavanje problema: Identificirajte najčešće probleme s performansama u roku od nekoliko minuta, ubrzavajući prosječno vrijeme rješavanja.
- Niska prepreka za ulazak: Nije potrebno napredno znanje za učinkovito korištenje alata, iako je potrebno dublje znanje SQL Server stručnost pomaže u tumačenju.
2. Početak rada s Monitorom aktivnosti
Prije nego što možete učinkovito koristiti Activity Monitor, morate razumjeti preduvjete, potrebna dopuštenja i različite metode za pokretanje alata.
2.1 Preduvjeti i sistemski zahtjevi
Koristiti SQL Server Monitor aktivnosti, potreban vam je SQL Server Management Studio (SSMS) instaliran na vašem lokalnom računalu ili jump serveru. Alat Activity Monitor značajno je redizajniran u SQL Server 2008., tako da se informacije u ovom vodiču odnose na SQL Server 2008 i novije verzije.
Morate imati mrežnu vezu s SQL Server instancu koju želite pratiti. Za baze podataka smještene u oblaku obično će vam trebati VPN veza ili ispravno konfigurirana pravila vatrozida za pristup instanci.
Monitor aktivnosti radi sa svim izdanjima SQL Server, uključujući Express, Standard i Enterprise. Sam alat se pokreće na vašem klijentskom računalu unutar SSMS-a, tako da na resurse poslužitelja utječu samo upiti za praćenje koje izvršava.
2.2 Potrebna dopuštenja
Ispravna dopuštenja su ključna za ispravan rad Monitora aktivnosti. Bez odgovarajućih dopuštenja, možete vidjeti prazan zaslon ili primiti pogreške o odbijanju pristupa.
2.2.1 Dozvola za PREGLED STANJA POSLUŽITELJA
The PRIKAŽI STANJE POSLUŽITELJA Dozvola je primarni uvjet za korištenje Monitora aktivnosti. Ova dozvola na razini poslužitelja omogućuje vam pregled svih aktivnih procesa i njihovih povezanih metrika.
Za dodjelu ove dozvole, administrator poslužitelja može izvršiti:
GRANT VIEW SERVER STATE TO [YourLoginName];
Bez opcije VIEW SERVER STATE, Monitor aktivnosti se može otvoriti, ali neće prikazivati podatke ni u jednom od svojih okna.
2.2.2 Dozvole na razini baze podataka
Za pregled informacija u oknu U/I za podatkovne datoteke potrebna su vam dodatna dopuštenja. Točnije, morate imati jednu od sljedećih kombinacija:
- STVORI BAZU PODATAKA dopuštenje, ili
- IZMIJENI BILO KOJU BAZU PODATAKA dopuštenje, ili
- POGLEDAJTE BILO KOJU DEFINICIJU dopuštenje
Ove dozvole moraju se kombinirati s PRIKAŽI STANJE POSLUŽITELJA za punu funkcionalnost Monitora aktivnosti.
2.2.3 Rješavanje problema s dopuštenjima
Ako se Monitor aktivnosti otvori, ali ne prikazuje podatke, najčešći uzrok su dopuštenja. Provjerite je li vašoj prijavi odobreno VIEW SERVER STATE na razini poslužitelja. Dopuštenja možete provjeriti pokretanjem:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
Potražite 'VIEW SERVER STATE' u stupcu permission_name. Ako nedostaje, obratite se administratoru baze podataka da vam ga odobri.
2.3 Kako otvoriti Monitor aktivnosti u SSMS-u
SQL Server Management Studio nudi četiri različite metode za pokretanje Activity Monitora, što vam daje fleksibilnost na temelju vaših preferencija tijeka rada.
2.3.1 Metoda 1: Iz alatne trake
Najbrži način za otvaranje Monitora aktivnosti je korištenje ikone alatne trake:
- Povežite se sa svojim SQL Server primjer u SQL Server Studio za upravljanje.
- Pronađite ikonu Monitor aktivnosti u standardnoj alatnoj traci (nalikuje stupčastom grafikonu sa zelenim gumbom za reprodukciju).
- Kliknite ikonu za pokretanje Monitora aktivnosti.
Ova je metoda najbrža kada već radite u SSMS-u i trebate brzo provjeriti aktivnost poslužitelja.
2.3.2 Metoda 2: Iz Istraživača objekata
Također možete pokrenuti Monitor aktivnosti izravno iz Object Explorera:
- U Exploreru objekata pronađite SQL Server instancu koju želite pratiti.
- Desnom tipkom miša kliknite naziv instance.
- odabrati Aktivnost Monitor iz kontekstnog izbornika.
Ova metoda je korisna prilikom povezivanja s više poslužitelja jer osigurava da pratite ispravnu instancu.
2.3.3 Metoda 3: Korištenje prečaca na tipkovnici
Za korisnike koji se fokusiraju na tipkovnicu, SQL Server Management Studio nudi namjenski prečac:
- Provjerite je li SSMS aktivni prozor i jeste li povezani s instancom.
- Press Ctrl + drugo + A.
- Monitor aktivnosti otvorit će se za trenutno odabranu instancu u Object Exploreru.
Imajte na umu da će se Activity Monitor povezati s instancom poslužitelja koju ste odabrali u Object Exploreru, stoga prije korištenja ovog prečaca provjerite jeste li odabrali ispravnu instancu.
2.3.4 Metoda 4: Iz izbornika s opcijama (Konfiguracija pokretanja)
Ako često koristite Activity Monitor, možete konfigurirati SSMS da ga automatski pokreće svaki put kada pokrenete aplikaciju:
- In SQL Server Management Studio, idite na Alati -> Opcije.
- U dijaloškom okviru Mogućnosti proširite okolina, A zatim odaberite Stavljanje u pogon.
- Od Pri pokretanju padajući popis, odaberite Otvorite Object Explorer i Activity Monitor.
- odabrati OK.
Sljedeći put kada pokrenete SSMS i spojite se na poslužitelj, Monitor aktivnosti će se automatski otvoriti uz Object Explorer.
3. Razumijevanje okna za praćenje aktivnosti
Nadzor aktivnosti organizira informacije u pet proširivih okvira, od kojih svaki pruža drugačiju perspektivu na aktivnost poslužitelja. Razumijevanje onoga što svaki okvir prikazuje ključno je za učinkovito rješavanje problema.
3.1 Okno pregleda
Okno Pregled prikazuje četiri grafikona u stvarnom vremenu koji vam daju brz pregled zdravstvenog stanja vašeg SQL Server primjer. Ovi se grafikoni ažuriraju u konfiguriranom intervalu i pomažu vam da na prvi pogled prepoznate abnormalne obrasce.
3.1.1 % Vrijeme procesora
Ovaj grafikon prikazuje postotak vremena koji procesor provodi izvršavajući niti koje nisu u mirovanju za SQL Server instancu na svim CPU-ima. Vrijednost predstavlja SQL Serveriskorištenost procesora, a ne iskorištenost CPU-a cijelog poslužitelja.
Ako stalno vidite da je vrijeme procesora na ili blizu 100%, vaš poslužitelj ima ograničenje procesora. To može ukazivati na neučinkovite upite, nedostajuće indekse ili nedovoljan hardverski kapacitet. Pomoću okna Nedavni skupi upiti identificirajte koji upiti troše najviše procesora.
3.1.2 Zadaci čekanja
Ova metrika prikazuje broj zadataka koji čekaju oslobađanje resursa prije nego što mogu nastaviti. Zadaci mogu čekati na CPU, I/O, memoriju ili zaključavanja.
Konzistentno velik broj zadataka na čekanju ukazuje na natjecanje za resurse. Okno Čekanje resursa pruža više detalja o tome koje vrste resursa uzrokuju čekanja.
3.1.3 Ulazno/izlazni promet baze podataka (MB/s)
Ovaj grafikon prikazuje brzinu prijenosa podataka između memorije i diska. Kombinira čitanje i pisanje, mjereno u megabajtima u sekundi.
Vrhunci u ulazno/izlaznim operacijama baze podataka mogu ukazivati na upite koji izvode skeniranje velikih tablica, prekomjernu aktivnost zapisivanja ili operacije kontrolnih točaka. Okno U/I za podatkovnu datoteku raščlanjuje aktivnost ulazno/izlaznih operacija prema bazi podataka i datoteci.
3.1.4 Grupni zahtjevi/sek
Ova metrika predstavlja broj SQL Server serije koje instanca prima po sekundi. Serija može biti jedna naredba ili više naredbi poslanih zajedno.
Ova vrijednost daje vam uvid u ukupnu aktivnost poslužitelja. Nagli padovi u serijskim zahtjevima tijekom uobičajenog radnog vremena mogu ukazivati na probleme s povezivanjem aplikacija ili probleme s kojima se suočavaju korisnici.
3.1.5 Postavljanje intervala osvježavanja
Možete prilagoditi koliko često Monitor aktivnosti ažurira svoje podatke:
- Desnom tipkom miša kliknite bilo gdje u oknu Pregled.
- odabrati Interval osvježavanja.
- Odaberite interval iz unaprijed definiranih vrijednosti: 1 sekunda, 5 sekundi, 10 sekundi (zadano), 30 sekundi, 1 minuta ili 1 sat.
Postavljanje intervala osvježavanja ispod 10 sekundi povećava opterećenje vašeg poslužitelja nadzorom. Za produkcijske sustave pod velikim opterećenjem razmislite o korištenju intervala od 30 sekundi ili dulje kako biste smanjili utjecaj.
3.2 Okno Procesi
Okno Procesi prikazuje informacije o trenutno pokrenutim sesijama na vašem SQL Server primjer. Ovaj okvir je ključan za prepoznavanje tko što radi i uočavanje problema koji blokiraju.
3.2.1 Razumijevanje informacija o procesu
Svaki redak u oknu Procesi predstavlja aktivnu sesiju na poslužitelju. Okno prikazuje sesije iz svih baza podataka i svih korisnika, dajući vam sveobuhvatan pregled aktivnosti poslužitelja.
Prikazane informacije uključuju korisničko ime, naziv aplikacije, naziv hosta, bazu podataka kojoj se pristupa i trenutnu naredbu. To vam pomaže povezati aktivnost baze podataka s određenim korisnicima ili aplikacijama.
3.2.2 Objašnjenje ključnih stupaca
Razumijevanje ključnih stupaca pomaže vam da učinkovito interpretirate informacije o procesu:
- ID sesije: Jedinstveni identifikator za svaku vezu. Sistemski procesi koriste negativne ID-ove sesija.
- Korisnički proces: Označava je li ovo korisnička sesija (Da) ili sistemski proces (Ne).
- Prijavi se: The SQL Server prijava ili Windows račun povezan sa sesijom.
- Baza podataka: Trenutni kontekst baze podataka za sesiju.
- Stanje zadatka: Prikazuje što se sesija trenutno radi (TRČI, OBUSTAVLJA SE, SPAVA itd.).
- Naredba: Vrsta naredbe koja se izvršava (SELECT, INSERT, UPDATE, itd.).
- Primjena: Naziv aplikacije koja je stvorila vezu.
- Vrijeme cekanja: Koliko dugo (u milisekundama) sesija čeka resurse.
- Vrsta čekanja: Specifična vrsta resursa koju sesija čeka.
- Vrijeme procesora: Ukupno vrijeme procesora koje je ova sesija potrošila od povezivanja.
- Korištenje memorije: Količina memorije (u KB) trenutno dodijeljena sesiji.
3.2.3 Procesi filtriranja i sortiranja
Okno Procesi uključuje moćne mogućnosti filtriranja koje vam pomažu da se usredotočite na relevantne sesije:
- Kliknite strelicu padajućeg izbornika u bilo kojem zaglavlju stupca.
- Filter prikazuje dostupne vrijednosti za taj stupac, uključujući Svi, Blanksi Nepraznine.
- Odaberite određene vrijednosti za filtriranje prikaza samo na te sesije.
Na primjer, možete filtrirati Stanje zadatka za prikaz samo TRENUTNIH sesija ili filtriranje Baza podataka vidjeti aktivnost u određenoj bazi podataka.
Također možete sortirati po bilo kojem stupcu klikom na njegovo zaglavlje. Kliknite jednom za uzlazni redoslijed, dvaput za silazni redoslijed.
3.2.4 Identificiranje blokiranja i blokiranih sesija
Okno Procesi pomaže vam prepoznati scenarije blokiranja u kojima jedna sesija sprječava nastavak drugih:
- Blokirao/la: Prikazuje ID sesije koja blokira ovu sesiju. Ako ovaj stupac sadrži vrijednost, sesija čeka zaključavanje koje drži druga sesija.
- Blokada glave: Prikazuje '1' ako ova sesija blokira druge, ali sama nije blokirana. To je glavni uzrok lanca blokiranja.
Da biste istražili problem blokiranja, prvo identificirajte blokator zaglavlja (sesiju označenu s '1' u stupcu Blokator zaglavlja), zatim provjerite što radi i odlučite hoćete li mu dopustiti da se dovrši ili ga prekinuti.
3.2.5 Radnje procesa (Uništi, Detalji, Praćenje)
Monitor aktivnosti omogućuje vam poduzimanje radnji na pojedinačnim sesijama:
- Desnom tipkom miša kliknite bilo koju sesiju u oknu Procesi.
- Vidjet ćete nekoliko opcija:
- Detalji: Prikazuje posljednju naredbu koju je izvršila ova sesija.
- Proces ubijanja: Završava sesiju (koristiti s oprezom).
- Proces praćenja u SQL Server profiler: Pokreće SQL Server Profiler i automatski filtrira kako bi prikazao samo aktivnost iz ove sesije.
Opcija Detalji prikazuje tekst naredbe, ali imajte na umu da je to zadnji naredba izvršena—možda se još uvijek ne izvršava. Opcija Trace je posebno korisna kada trebate vidjeti cijeli niz naredbi koje sesija izvršava.
3.3 Okno čekanja resursa
Okno Čekanje resursa sažima statistiku čekanja, pokazujući koje vrste sesija resursa najčešće čekaju. Ove su informacije ključne za dijagnosticiranje uskih grla u performansama.
3.3.1 Razumijevanje statistike čekanja
Kada SQL Server ne može odmah odobriti zahtjev za resursom (kao što je zaključavanje, vrijeme CPU-a ili memorija), zadatak koji podnosi zahtjev ulazi u stanje čekanja. Statistika čekanja prati ta razdoblja čekanja i pomaže vam da shvatite gdje poslužitelj troši vrijeme čekajući umjesto da radi.
Okno Čekanje resursa prikuplja podatke iz prikaza dinamičkog upravljanja sustavom kao što su sys.dm_os_wait_stats i sys.dm_exec_requests. U svakom intervalu osvježavanja izračunava razliku između trenutne i prethodne snimke, prikazujući vam stopu akumulacije za svaku vrstu čekanja.
3.3.2 Kategorije čekanja
Monitor aktivnosti grupira stotine pojedinačnih vrsta čekanja u šire kategorije radi pojednostavljenja interpretacije:
- CPU: Zadaci koji čekaju da CPU vrijeme postane dostupno.
- Zasun međuspremnika: Čeka objekte kratkoročne sinkronizacije koji štite pristup stranicama podataka u memoriji. Ova kategorija uključuje čekanja zasuna stranica (PAGELATCH_*).
- Lock: Čekanja uzrokovana sesijama koje drže brave koje su potrebne drugim sesijama.
- Memorija: Čeka na memorijske dodjele potrebne operacijama poput sortiranja i hashiranja.
- Mrežni ulaz/izlaz: Čeka slanje podataka klijentima ili primanje podataka od njih.
- SQL CLR: Čekanja povezana s izvršavanjem Common Language Runtimea.
Iako ovo grupiranje pojednostavljuje prikaz, ono također prikriva važne detalje. Na primjer, "Buffer Latch" može grupirati čekanja PAGELATCH_SH, PAGELATCH_UP i PAGELATCH_EX, koja imaju različite implikacije na performanse.
3.3.3 Tumačenje vremena čekanja i zadataka čekanja
Okno Čekanje resursa prikazuje dvije ključne metrike za svaku kategoriju čekanja:
- Kumulativno vrijeme čekanja (ms): Ukupan broj milisekundi akumuliranih tijekom trenutnog intervala osvježavanja za ovu kategoriju čekanja.
- Zadaci čekanja: Broj zadataka koji trenutno čekaju resurse u ovoj kategoriji.
Vrijednost vremena čekanja je posebno zanimljiva. Ako imate interval osvježavanja od 10 sekundi i vidite 20 000 ms vremena čekanja za kategoriju, to ukazuje na više istodobnih čekanja (20 000 ms / 10 000 ms = prosjek od 2 istodobna čekanja tijekom intervala).
3.3.4 Utvrđivanje uskih grla u performansama
Pomoću okna Čekanje resursa utvrdite gdje vaš poslužitelj provodi najviše vremena čekajući:
- Proširite okno Čekanje resursa.
- Promatrajte kategorije čekanja koje akumuliraju najduža vremena čekanja.
- Poredaj po Kumulativno vrijeme čekanja kako bi se vidjelo koji su resursi najograničeniji.
Čekanja s visokim stupnjem zadržavanja međuspremnika često ukazuju na natjecanje za podatkovne stranice u memoriji, što može ukazivati na uska grla ulazno/izlaznih sustava ili natjecanje u tempdb-u. Čekanja s visokim stupnjem zaključavanja ukazuju na probleme s blokiranjem. Čekanja s visokim stupnjem memorije ukazuju na nedovoljne memorijske dodjele za operacije upita.
3.4 Okno za ulazno/izlazne podatke datoteka
Okno Ulazno/izlazne datoteke podataka prikazuje aktivnost diska za svaku datoteku baze podataka na vašem poslužitelju, što vam pomaže identificirati uska grla ulazno/izlaznih operacija i razumjeti obrasce korištenja diska.
3.4.1 Razumijevanje I/O metrika
Okno Ulazno/izlazne datoteke podataka prikazuje nekoliko metrika za svaku datoteku baze podataka:
- Baza podataka: Naziv baze podataka.
- Vrsta datoteke: Ili Podaci (uključujući tablice i indekse) ili Zapisnik (zapisnik transakcija).
- Logički naziv: Logički naziv datoteke kako je definiran u SQL Server.
- Čitanje u MB/s: Brzina čitanja podataka iz ove datoteke.
- MB/s Zapisano: Brzina zapisivanja podataka u ovu datoteku.
- Vrijeme odziva (ms): Prosječno vrijeme odgovora za I/O operacije na ovoj datoteci.
Ove metrike osvježavaju se u istom intervalu kao i okno Pregled, što vam daje uvid u aktivnost diska u stvarnom vremenu.
3.4.2 Identificiranje uskih grla u ulazno/izlaznim operacijama
Obratite pažnju na ove obrasce koji ukazuju na probleme s performansama ulazno/izlaznih operacija:
- Visoko vrijeme odziva: Vremena odziva konstantno iznad 15-20 ms ukazuju na spore podsustave diska. Vremena odziva iznad 50 ms ukazuju na ozbiljna uska grla u ulazno/izlaznim operacijama.
- Neuravnoteženo opterećenje: Ako jedna podatkovna datoteka pokazuje znatno veće brzine ulazno/izlaznih operacija od drugih u istoj bazi podataka, moglo bi vam koristiti dodavanje dodatnih datoteka radi raspodjele opterećenja.
- Prekomjerna aktivnost Tempdb-a: Visoke brzine ulazno/izlaznih operacija na tempdb datotekama često ukazuju na upite koji stvaraju velike međuskupove rezultata ili koriste neučinkovite planove izvršavanja.
3.4.3 Analiza datoteka baze podataka
Pomoću okna Data File I/O (Ulazno/izlazne postavke datoteka) možete razumjeti kako vaše baze podataka koriste diskovne resurse:
- Proširite okno U/I za podatkovne datoteke.
- Poredaj po MB/s čitanja or MB/s zapisano identificirati najaktivnije datoteke.
- Zabilježite sve datoteke s konstantno visokom aktivnošću ili dugim vremenom odziva.
- Usporedite ove informacije s oknom Nedavni skupi upiti kako biste utvrdili koji upiti uzrokuju opterećenje ulazno/izlaznih operacija.
3.5 Okno Nedavni skupi upiti
Okno Nedavni skupi upiti često je najvrjednije okno za rješavanje problema s performansama aplikacije. Prikazuje upite koji troše značajne resurse poslužitelja, što vam pomaže u prepoznavanju prilika za optimizaciju.
3.5.1 Razumijevanje metrika upita
Monitor aktivnosti prikazuje nekoliko metrika za svaki skupi upit:
- Izvršenja/min: Koliko je puta upit izvršen tijekom posljednje minute.
- Procesor (ms/s): Vrijeme procesora koje ovaj upit troši po sekundi.
- Fizičkih čitanja/sek: Broj čitanja fizičkog diska u sekundi za ovaj upit.
- Logičkih zapisa/sek: Broj logičkih zapisa (u predmemoriju međuspremnika) u sekundi.
- Logičkih čitanja/sek: Broj logičkih čitanja (iz predmemorije međuspremnika) u sekundi.
- Prosječno trajanje (ms): Prosječno vrijeme izvršavanja za ovaj upit.
- Broj plana: Broj planova izvršenja u predmemoriji za ovaj upit.
Ove metrike vam pomažu da shvatite ne samo koji su upiti skupi, već zašto skupi su i koliko često se voze.
3.5.2 Mogućnosti sortiranja
Okno Nedavni skupi upiti možete sortirati prema različitim metrikama kako biste pronašli različite vrste problema:
- Kliknite bilo koje zaglavlje stupca za sortiranje po tom metričkom podatku.
- Uobičajene strategije sortiranja uključuju:
- Sortiraj po CPU-u: Pronađite upite koji troše najviše procesorskog vremena.
- Sortiraj po Izvršenjima/min: Identificirajte upite koji se prečesto izvršavaju.
- Sortiraj po fizičkom čitanju: Pronađite upite koji uzrokuju najviše ulazno/izlaznih operacija na disku.
- Sortiraj po prosječnom trajanju: Pronađite dugotrajne upite.
Prilikom rješavanja problema s performansama, pokušajte sortirati po više stupaca kako biste dobili različite perspektive. Upit s umjerenom upotrebom CPU-a, ali izuzetno visokim brojem izvršavanja u minuti, mogao bi biti vaš pravi problem.
3.5.3 Pregled teksta upita
Da biste vidjeli stvarnu SQL naredbu iza skupog upita:
- Desnom tipkom miša kliknite redak upita u oknu Nedavni skupi upiti.
- odabrati Uredi tekst upita.
- Otvara se novi prozor upita koji prikazuje cijelu SQL naredbu.
To vam omogućuje da ispitate logiku upita i identificirate potencijalne mogućnosti optimizacije. Zatim možete kopirati tekst upita za testiranje modificiranih verzija.
3.5.4 Analiza planova izvršenja
Izvršni planovi vam pokazuju kako SQL Server izvršava upit, otkrivajući neučinkovitosti poput nedostajućih indeksa ili neprikladnih tipova spajanja:
- Desnom tipkom miša kliknite redak upita u oknu Nedavni skupi upiti.
- odabrati Prikaži plan izvršenja.
- SQL Server Management Studio prikazuje grafički prikaz izvršavanja upita.
Tražite operacije koje troše velike postotke troškova upita, upozorenja o nedostajućim statistikama ili indeksima i neočekivane operacije skeniranja tablica. To često ukazuje na to gdje bi se trebali usmjeriti napori optimizacije.
3.5.5 Identificiranje problematičnih upita
Obratite pozornost na ove obrasce u oknu Nedavni skupi upiti:
- Prekomjerna pogubljenja: Upit koji se izvršava tisuće puta u minuti može ukazivati na problem upita N+1 gdje aplikacijski kod poziva bazu podataka unutar petlje.
- Visoka fizička očitavanja: Upiti s visokim stopama fizičkog čitanja često pogađaju disk, što ukazuje na nedostajuće indekse ili loše napisane upite.
- Visok CPU s kratkim trajanjem: Mnogi brzi upiti koji zajedno troše puno CPU-a mogu utjecati na performanse poslužitelja jednako kao i nekoliko sporih upita.
- Višestruki brojevi planova: Upiti s mnogo planova izvršenja mogu patiti od problema s njuškanjem parametara ili neparametriziranih upita koji uzrokuju napuhavanje predmemorije plana.
4. Korištenje monitora aktivnosti za rješavanje problema s performansama
Monitor aktivnosti zaista blista kada ga sustavno koristite za dijagnosticiranje i rješavanje problema s performansama. Ovaj odjeljak pokriva uobičajene scenarije rješavanja problema i kako im pristupiti.
4.1 Dijagnosticiranje prekomjernih izvršavanja upita
Jedan od najčešćih problema s performansama su upiti koji se izvršavaju puno češće nego što je potrebno, često zbog problema s dizajnom aplikacije.
4.1.1 Identificiranje ponovljenih upita
Za uočavanje upita koji se prečesto izvršavaju:
- Otvorite Monitor aktivnosti i proširite Nedavni skupi upiti okno.
- Poredaj po Izvršenja/min (izvršenja u minuti).
- Potražite upite na vrhu s brojem izvršenja koji se čini nerazumno visokim.
- Desnom tipkom miša kliknite sumnjivi upit i odaberite Uredi tekst upita za pregled SQL naredbe.
Na primjer, ako vidite jednostavnu SELECT naredbu koja se izvršava 37 000 puta u minuti, zapitajte se treba li aplikacija zaista pozivati ovaj upit tako često. Većina upita koji se izvršavaju više od nekoliko tisuća puta u minuti zahtijeva istraživanje.
4.1.2 Analiza temeljnog uzroka
Prekomjerno izvršavanje upita obično proizlazi iz ovih problema:
- Problem upita N+1: Aplikacijski kod dohvaća popis stavki, a zatim izvršava zaseban upit za svaku stavku kako bi dohvatio povezane podatke. To stvara N dodatnih upita gdje je N broj stavki.
- Nedostaje keširanje: Aplikacija šalje upite bazi podataka za podatke koji se rijetko mijenjaju umjesto da ih pohranjuje u memoriju aplikacije.
- Petlje anketiranja: Kod opetovano šalje upite bazi podataka provjeravajući promjene stanja umjesto korištenja obavijesti o promjenama ili redova poruka.
- Neučinkovitost ORM-a: Entity Framework i slični alati ponekad generiraju neučinkovite obrasce upita kada programeri ne razumiju kako se njihov kod prevodi u SQL.
Da biste utvrdili uzrok, pratite upit do koda aplikacije. Imajte na umu primjena i Login stupce u oknu Procesi kada se upit izvrši. Također možete desnom tipkom miša kliknuti proces i odabrati Proces praćenja u SQL Server Profiler kako biste vidjeli obrazac poziva.
4.1.3 Rješenja i najbolji primjeri iz prakse
Nakon što ste identificirali prekomjeran broj izvršavanja upita, razmotrite ova rješenja:
- Skupna obrada: Izmijenite kod aplikacije kako biste dohvatili više stavki u jednom upitu pomoću spajanja ili IN klauzula umjesto izvršavanja odvojenih upita u petlji.
- Predmemoriranje rezultata: Često pristupana predmemorija, rijetko mijenjanje podataka u memoriji aplikacije s odgovarajućim vremenima isteka.
- Nestrpljivo učitavanje: Konfigurirajte ORM-ove za korištenje strategija brzog učitavanja koje dohvaćaju povezane podatke u manjem broju upita, a učinkovitije.
- Parametrizacija upita: Osigurajte da upiti koriste parametre umjesto spajanja vrijednosti, što poboljšava ponovnu upotrebu predmemorije plana i smanjuje opterećenje kompajliranja.
4.2 Istraživanje problema s blokiranjem
Do blokiranja dolazi kada jedna sesija drži zaključane koje sprječavaju nastavak drugih sesija. To se manifestira kao sporo vrijeme odziva aplikacije i frustrirani korisnici.
4.2.1 Identificiranje lanaca blokiranja
Za otkrivanje i analizu blokiranja:
- Otvorite Monitor aktivnosti i proširite Procesira okno.
- Potražite sesije s vrijednostima u Blokirao/la stupac – oni čekaju brave koje drže druge sesije.
- Pronađi sesije s '1' u Bloker za glavu stupac - to su glavni uzrok blokiranja lanaca.
- Napomena ID sesije blokatora glave.
- Desnom tipkom miša kliknite sesiju blokatora glave i odaberite Detaljnije da vidi koju naredbu izvršava.
Razumijevanje lanca blokiranja je ključno. Glavni blokator je sesija koju trebate istražiti, a ne blokirane sesije nizvodno.
4.2.2 Razumijevanje vrsta brava
The Vrsta čekanja Stupac u oknu Procesi označava koju vrstu zaključavanja blokirane sesije čekaju:
- LCK_M_X: Čekanje ekskluzivnog zaključavanja, obično uzrokovano operacijama UPDATE, DELETE ili INSERT.
- LCK_M_S: Čekanje dijeljenog zaključavanja, obično SELECT naredbe čekaju otpuštanje ekskluzivnih zaključavanja.
- LCK_M_U: Čekanje zaključavanja ažuriranja, međuvrsta zaključavanja koja se koristi tijekom ažuriranja.
- LCK_M_IX: Čekanje isključivog zaključavanja namjere, što ukazuje na sukob zaključavanja na razini stranice ili retka.
The Resursi čekanja Stupac prikazuje koji se objekt baze podataka zaključava, što vam pomaže da shvatite koja je tablica ili indeks uključen u sukob.
4.2.3 Rješavanje problema s blokiranjem
Nakon što ste identificirali blokirajuću sesiju i što ona radi, imate nekoliko mogućnosti:
- Pričekajte završetak: Ako bloker zaglavlja izvršava legitimni upit koji će uskoro završiti, možda je najbolje pustiti ga da se prirodno završi.
- Ubij sesiju: Ako je blokator zaglavlja zaglavljen ili pokreće upit koji treba otkazati:
- Desnom tipkom miša kliknite sesiju u oknu Procesi.
- odabrati Ubiti proces.
- Potvrdite radnju u dijaloškom okviru.
- Upiti za optimizaciju: Ako se blokiranje ponavlja s istim upitima, optimizirajte ih kako biste smanjili trajanje zaključavanja.
- Prilagodite razine izolacije: Razmislite o korištenju READ COMMITTED SNAPSHOT IZOLATION kako biste smanjili blokiranje kod opterećenja s velikim brojem čitanja.
- Podešavanje indeksa: Dodajte indekse kako biste ubrzali upite i smanjili vrijeme zadržavanja brava.
4.3 Analiza visoke upotrebe CPU-a
Kada okno Pregled konstantno prikazuje vrijeme procesora na ili blizu 100%, potrebno je identificirati koji su upiti odgovorni i utvrditi mogu li se optimizirati.
4.3.1 Identificiranje upita koji intenzivno koriste CPU
Za pronalaženje upita koji previše troše CPU:
- Otvorite Nedavni skupi upiti okno.
- Poredaj po CPU (ms/s) za prikaz upita koji koriste najviše CPU vremena.
- Pregledajte najčešće upite na popisu.
- Desnom tipkom miša kliknite upite s visokim udjelom procesora i odaberite Uredi tekst upita za pregled SQL naredbe.
- odabrati Prikaži plan izvršenja kako bi se razumjelo kako se upit izvršava.
Obratite pažnju ne samo na korištenje CPU-a za pojedinačne upite, već i na Izvršenja/min stupac. Upit koji koristi umjerenu CPU po izvršavanju, ali se izvršava tisuće puta u minuti, može biti vaš najveći potrošač CPU-a.
4.3.2 Tehnike optimizacije upita
Uobičajeni pristupi za smanjenje potrošnje CPU-a uključuju:
- Dodajte nedostajuće indekse: Traženje indeksa koristi puno manje CPU-a nego skeniranje tablica. Potražite preporuke za nedostajuće indekse u planovima izvršenja.
- Prepisivanje neučinkovitih upita: Zamijenite kursore operacijama temeljenim na skupovima, uklonite nepotrebne funkcije u WHERE klauzulama i uklonite redundantne spojeve.
- Ažuriranje statistike: Zastarjela statistika uzrokuje SQL Server odabrati neučinkovite planove izvršenja. Pokrenite UPDATE STATISTICS na pogođenim tablicama.
- Smanjite količinu podataka: Dodajte WHERE klauzule za ranije filtriranje podataka, koristite TOP ili OFFSET/FETCH za paginaciju i izbjegavajte SELECT *.
- Ispravljanje njuškanja parametara: Koristite OPTION (RECOMPILE), nagovještaje upita ili vodiče za plan kada njuškanje parametara uzrokuje probleme.
4.4 Istraživanje problema s pamćenjem
Pritisak memorije može uzrokovati prelijevanje upita na disk, što značajno smanjuje performanse. Monitor aktivnosti pomaže vam u prepoznavanju operacija koje intenzivno koriste memoriju.
4.4.1 Razumijevanje metrika memorije
The Korištenje memorije Stupac u oknu Procesi prikazuje memoriju dodijeljenu svakoj sesiji u kilobajtima. Visoka upotreba memorije od strane jedne sesije često ukazuje na:
- Velike operacije sortiranja ili hashiranja koje nisu mogle stati u početno dodijeljenu memoriju
- Upiti koji dohvaćaju ogromne skupove rezultata
- Prekomjerni paralelizam stvara mnogo kopija operatora plana izvršenja
- Curenje memorije u CLR pohranjenim procedurama ili funkcijama
Okno Čekanje resursa može prikazivati Čekanje memorije kada upiti ne mogu dobiti dovoljno memorijskih dozvola i moraju čekati da memorija postane dostupna.
4.4.2 Identificiranje upita koji intenzivno koriste memoriju
Za pronalaženje upita koji uzrokuju pritisak na memoriju:
- u Procesira okno, sortiraj po Korištenje memorije kako biste vidjeli sesije koje troše najviše memorije.
- Desnim klikom miša kliknite sesije s velikom potrošnjom memorije i odaberite Detaljnije kako biste vidjeli njihove upite.
- u Nedavni skupi upiti u oknu potražite upite s visokim Logička čitanja or Logički zapisi, jer se to često povezuje s korištenjem memorije.
- Ispitajte planove izvršavanja za operatore sortiranja i podudaranja hash-a koji koriste memorijske grantove.
Upiti koji prikazuju upozorenja "Dodjela memorije" u planovima izvršenja ili upozorenjima o prelijevanju ukazuju na probleme s pritiskom memorije.
4.5 Otkrivanje problema s performansama aplikacije
Kada korisnici prijave sporo vrijeme odziva aplikacije, Activity Monitor vam pomaže utvrditi je li baza podataka usko grlo.
4.5.1 Povezivanje Monitora aktivnosti s problemima aplikacije
Za istraživanje sporosti aplikacije:
- Zabilježite točno vrijeme kada korisnici prijavljuju probleme i koje su aplikacije pogođene.
- Otvorite Monitor aktivnosti i provjerite SAŽETAK okno za skokove resursa u tom trenutku.
- u Procesira okno, filtriraj po primjena kako bi se prikazale samo veze iz pogođene aplikacije.
- Tražite visoko Vrijeme cekanja vrijednosti koje označavaju kašnjenja baze podataka.
- Provjeri Nedavni skupi upiti okno za upite iz te aplikacije koja troši značajne resurse.
Ako baza podataka ne pokazuje neuobičajenu aktivnost dok korisnici doživljavaju usporavanje, problem vjerojatno leži u kodu aplikacije, latenciji mreže ili performansama na strani klijenta.
4.5.2 Identificiranje neučinkovitih obrazaca primjene
Monitor aktivnosti otkriva nekoliko anti-uzoraka u dizajnu aplikacija:
- Pričajuće aplikacije: Mnogo malih upita umjesto manjeg broja, učinkovitijih upita. Prepoznatljivo po velikom broju veza i brojnim jednostavnim upitima u Nedavnim skupim upitima.
- N+1 upita: Jedan upit nakon kojeg slijedi N dodatnih upita za povezane podatke. Prikazuje se kao jednostavan upit s izuzetno velikim brojem izvršavanja u minuti.
- Veliki skupovi rezultata: Aplikacije dohvaćaju puno više podataka nego što je potrebno. Potražite visoke Logička čitanja u kombinaciji s jednostavnim SELECT * upitima.
- Nedostajuća vremenska ograničenja: Aplikacije koje ne postavljaju vremenska ograničenja naredbi mogu ostaviti veze otvorenima neograničeno, vidljive kao dugotrajne sesije u oknu Procesi.
5. Alternativne metode: Dobivanje podataka monitora aktivnosti putem T-SQL-a
Iako Monitor aktivnosti pruža praktično grafičko sučelje, ponekad je potrebno programski dohvatiti ekvivalentne informacije ili stvoriti prilagođena rješenja za praćenje.
5.1 Korištenje dinamičkih upravljačkih prikaza (DMV)
SQL Server izlaže informacije o aktivnostima putem dinamičkih upravljačkih prikaza, koje Monitor aktivnosti ispituje iza kulisa.
5.1.1 Ključni DMV-ovi za praćenje aktivnosti
Najvažniji DMV-ovi za repliciranje funkcionalnosti Activity Monitora uključuju:
- sys.dm_exec_requests: Prikazuje trenutno izvršavane zahtjeve s informacijama o CPU-u, I/O-u i čekanju.
- sys.dm_exec_sessions: Sadrži informacije na razini sesije poput korisničkog imena, imena hosta i imena programa.
- sys.dm_os_wait_stats: Pruža kumulativnu statistiku čekanja za cijelu instancu.
- sys.dm_exec_query_stats: Sadrži agregirane statistike performansi za predmemorirane upite.
- sys.dm_io_virtual_file_stats: Vraća I/O statistiku za podatke i datoteke zapisnika.
- sys.dm_exec_sql_text: Dohvaća SQL tekst za zadani sql_handle ili plan_handle.
- sys.dm_exec_query_plan: Vraća plan izvršenja za keširani upit.
5.1.2 Primjeri upita za informacije o procesu
Za repliciranje funkcionalnosti okna Procesi možete poslati upit:
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 Primjeri upita za statistiku čekanja
Za pregled statistike čekanja slične onoj u oknu Čekanje resursa:
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 Korištenje sp_WhoIsActive
sp_WhoIsActive je moćna pohranjena procedura koju je stvorila zajednica i koja pruža detaljnije informacije od Monitora aktivnosti u jednom skupu rezultata.
5.2.1 Instaliranje sp_WhoIsActive
Za instalaciju sp_WhoIsActive:
- Preuzmite najnoviju verziju sa
http://whoisactive.com. - Preuzimanje je SQL skripta koja sadrži definiciju procedure.
- Otvorite skriptu u SQL Server Studio za upravljanje.
- Povežite se sa svojim SQL Server primjer.
- Izvršite skriptu za stvaranje procedure u glavnoj bazi podataka.
- Dodijelite dozvole za izvršavanje odgovarajućim korisnicima.
Budući da je sp_WhoIsActive instaliran u glavnoj bazi podataka, dostupan je iz bilo kojeg konteksta baze podataka.
5.2.2 Osnovni primjeri upotrebe
Najjednostavniji način korištenja sp_WhoIsActive je:
EXEC sp_WhoIsActive;
Ovo vraća skup rezultata koji prikazuje sve aktivne sesije s njihovim upitima, vrstama čekanja, informacijama o blokiranju i korištenju resursa.
Za uzorak od 10 sekundi koji prikazuje aktivnost tijekom tog razdoblja:
EXEC sp_WhoIsActive @delta_interval = 10;
Ovo izračunava delte za metrike poput CPU-a i čitanja, pokazujući što se dogodilo tijekom tih 10 sekundi.
5.2.3 Napredni parametri
sp_WhoIsActive podržava brojne parametre za prilagodbu:
- @filter: Filtrirajte rezultate prema određenim sesijama, bazama podataka ili prijavama.
- @vrsta_filtera: Navedite na što se filter primjenjuje (sesija, baza podataka, prijava itd.).
- @get_plans: U rezultate uključite planove izvršenja (postavljeno na 1).
- @get_locks: Prikaži detaljne informacije o bravi (postavljeno na 1).
- @get_transaction_info: Prikaži detalje transakcije (postavljeno na 1).
- @sort_order: Poredajte rezultate prema različitim metrikama (CPU, očitavanja, trajanje itd.).
- @destination_table: Umetnite rezultate u tablicu za praćenje povijesti.
Primjer koji prikazuje planove sortirane po CPU-u:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Korištenje pohranjenih procedura sustava
SQL Server uključuje tradicionalne pohranjene procedure za praćenje aktivnosti, iako pružaju manje informacija od DMV-ova ili Monitora aktivnosti.
5.3.1 sp_who i sp_who2
Procedura sp_who prikazuje osnovne informacije o sesiji:
EXEC sp_who;
Procedura sp_who2 pruža nešto više detalja:
EXEC sp_who2;
Oba postupka prikazuju ID-ove sesija, korisnička imena, vrijeme procesora i informacije o blokiranju. Međutim, nedostaju im bogati detalji dostupni putem DMV-ova ili Monitora aktivnosti. Najkorisniji su za brze provjere kada vam je potrebno minimalno informacija.
5.3.2 Ostali korisni sistemski postupci
Dodatni sistemski postupci za praćenje uključuju:
- sp_lock: Prikazuje informacije o zaključavanju (zastarjelo; umjesto toga koristite sys.dm_tran_locks).
- sp_monitor: Prikazuje statistiku o SQL Server aktivnost.
- sp_pomoć: Prikazuje definicije objekata i metapodatke.
- DBCC SQLPERF: Prikazuje korištenje prostora u dnevniku transakcija i statistiku čekanja.
5.4 Izrada prilagođenih skripti za praćenje
Za okruženja koja zahtijevaju specifično praćenje izvan onoga što pruža Activity Monitor, možete izraditi prilagođena rješenja pomoću DMV-ova.
5.4.1 Potpuni ekvivalentni skript za praćenje aktivnosti
Evo sveobuhvatnog skripta koji replicira većinu funkcionalnosti Activity Monitora:
-- 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 Automatizacija praćenja pomoću poslova SQL agenta
Možete zakazati prilagođene skripte za praćenje pomoću SQL Server Agent:
- Izradite tablicu za pohranu rezultata praćenja.
- Izmijenite svoj skript za praćenje kako biste umetnuli rezultate u ovu tablicu.
- In SQL Server Management Studio, proširi SQL Server Agent u Exploreru objekata.
- Desnom tipkom miša Posao i odaberite Novi posao.
- Konfigurirajte zadatak da redovito izvršava vašu skriptu za praćenje.
- Postavite upozorenja ili izvješća na temelju prikupljenih podataka.
Ovaj pristup omogućuje praćenje povijesti i analizu trendova koje Monitor aktivnosti ne pruža.
6. Ograničenja i razmatranja monitora aktivnosti
Iako je Monitor aktivnosti vrijedan, razumijevanje njegovih ograničenja pomaže vam da ga pravilno koristite i nadopunite drugim alatima kada je to potrebno.
6.1 Razumijevanje opterećenja monitora aktivnosti
Monitor aktivnosti nije besplatan - troši resurse poslužitelja za prikupljanje i prikaz informacija. Razumijevanje tog opterećenja pomaže vam da ga koristite odgovorno.
6.1.1 Utjecaj na resurse poslužitelja
Monitor aktivnosti pokreće upite prema sistemskim DMV-ovima svaki put kada se osvježi. Ti upiti troše CPU, generiraju logička čitanja i mogu kratko držati zaključane sistemske tablice. Na prometnim poslužiteljima ovo opterećenje može utjecati na performanse.
Okna Procesi i Nedavni skupi upiti su posebno skupa jer moraju skenirati potencijalno velike DMV-ove i tablice predmemorije. Na poslužiteljima s tisućama predmemoriranih planova upita, osvježavanje Nedavnih skupih upita može potrajati nekoliko sekundi.
Microsoftova dokumentacija upozorava da intervali osvježavanja kraći od 10 sekundi mogu značajno utjecati na performanse poslužitelja, posebno na već učitanim sustavima.
6.1.2 Najbolje prakse za interval osvježavanja
Odaberite intervale osvježavanja koji odgovaraju vašoj situaciji:
- 1-5 sekundi: Samo za trenutno rješavanje kritičnih problema na slabo opterećenim poslužiteljima. Nemojte ostavljati Monitor aktivnosti pokrenut u tim intervalima.
- 10 sekundi (zadano): Razumno za većinu scenarija rješavanja problema i općeg praćenja.
- 30-60 sekundi: Bolji izbor za produkcijske servere pod velikim opterećenjem ili prilikom praćenja tijekom duljih razdoblja.
- Samo ručno osvježavanje: Za situacije u kojima želite povremeno provjeravati trenutno stanje bez kontinuiranog ispitivanja.
Uvijek zatvorite Monitor aktivnosti kada završite s istraživanjem. Nemojte ga ostavljati da radi neprestano, posebno ne više instanci od različitih korisnika.
6.2 Problemi s grupiranjem tipova čekanja
Pristup Monitora aktivnosti kategorizaciji čekanja, iako pojednostavljuje prikaz, može prikriti važne dijagnostičke informacije.
6.2.1 Kako praćenje aktivnosti grupira čekanja
SQL Server prati stotine različitih vrsta čekanja, od kojih svaka označava određeni resurs ili uvjet. Monitor aktivnosti grupira ih u široke kategorije poput "Zaključavanje međuspremnika", "Zaključavanje" i "Memorija".
Na primjer, kategorija „Buffer Latch“ uključuje PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX i nekoliko drugih specifičnih vrsta čekanja. Iako su sve povezane s pristupom stranici, imaju različite uzroke i rješenja.
Microsoft ne dokumentira točno koje vrste čekanja odgovaraju kojim kategorijama, što otežava razumijevanje onoga što zapravo vidite.
6.2.2 Nedostajući tipovi čekanja
Monitor aktivnosti ne prikazuje sve vrste čekanja. Najznačajnije je da često izostavlja CXPACKET čekanja, koja ukazuju na paralelno izvršavanje upita. CXPACKET čekanja su uobičajena i obično nisu problematična, ali poznavanje njihove prisutnosti pomaže vam da razumijete karakteristike radnog opterećenja.
Kada Activity Monitor prikazuje "Buffer Latch" kao vaše glavno čekanje, ali drugi alati pokazuju da dominira CXPACKET, odstupanje proizlazi iz logike filtriranja i grupiranja Activity Monitora.
6.2.3 Zašto su određene vrste čekanja važne
Poznavanje specifične vrste čekanja važno je za rješavanje problema:
- PAGELATCH_EX: Često ukazuje na sukob tempdb-a na stranicama za alokaciju. Rješenje uključuje dodavanje više tempdb podatkovnih datoteka.
- PAGELATCH_SH: Može ukazivati na vruće stranice u korisničkim tablicama. Rješenje uključuje particioniranje ili reorganizaciju indeksa.
- PAGELACK_UP: Uobičajeno tijekom ažuriranja. Može ukazivati na normalan rad, a ne na problem.
Monitor aktivnosti sve to grupira pod "Buffer Latch", što otežava dijagnozu. Alati poput sp_WhoIsActive i DMV upita prikazuju specifične vrste čekanja.
6.3 Točnost i pravovremenost podataka
Monitor aktivnosti pruža prikaz gotovo u stvarnom vremenu, ali "gotovo" je ključna riječ. Razumijevanje njegove metode prikupljanja podataka pomaže vam da ispravno interpretirate rezultate.
6.3.1 Snimka stanja u odnosu na kontinuirano praćenje
Monitor aktivnosti prikazuje snimke u određenom trenutku snimljene u svakom intervalu osvježavanja. Događaji koji se događaju između snimaka se ne bilježe. Ako se upit izvršava 2 sekunde, a osvježavate svakih 10 sekundi, možete ga vidjeti jednom ili uopće ne, ovisno o vremenu.
To znači da se Activity Monitor ističe u pronalaženju trajnih problema (blokiranje koje traje nekoliko minuta, stalno visoko opterećenje CPU-a), ali može propustiti prolazne probleme (kratke blokade, povremene skokove upita).
6.3.2 Agregacija i uzorkovanje
Okno Nedavni skupi upiti prikazuje podatke agregirane od ulaska planova upita u predmemoriju. Dva identična upita s različitim vrijednostima parametara prikazuju se kao jedan redak ako dijele plan. Ova agregacija može prikriti probleme s određenim kombinacijama parametara (problemi s njuškanjem parametara).
Okno Čekanje resursa izračunava stope uspoređujući snimke. Ako se statistika čekanja resetira između snimaka (rijetko, ali moguće), izračunate stope mogu biti netočne.
6.4 Kada NE koristiti Monitor aktivnosti
Monitor aktivnosti nije prikladan za svaki scenarij praćenja. Prepoznajte kada su alternativni alati bolji izbor.
6.4.1 Zahtjevi za povijesnu analizu
Monitor aktivnosti prikazuje samo trenutnu ili nedavnu aktivnost. Ne pohranjuje povijesne podatke. Ako trebate analizirati trendove tijekom dana ili tjedana, usporediti trenutne performanse s osnovnim vrijednostima ili generirati izvješća o obrascima performansi, Monitor aktivnosti nije dovoljan.
Za povijesnu analizu koristite SQL Serverugrađena nadzorna ploča performansi, prošireni događaji s ciljevima datoteka ili rješenja za praćenje trećih strana.
6.4.2 Potrebe za detaljnom statistikom čekanja
Kada su vam potrebne precizne informacije o vrsti čekanja za napredno podešavanje, grupiranje i filtriranje u Monitoru aktivnosti čine ih neadekvatnima. Umjesto toga koristite izravno DMV upite ili sp_WhoIsActive.
Za sveobuhvatnu analizu statistike čekanja, izravno upitajte sys.dm_os_wait_stats i ručno filtrirajte benigna čekanja.
6.4.3 Razmatranja o produkcijskom poslužitelju
Na produkcijskim poslužiteljima pod velikim opterećenjem, opterećenje Activity Monitora može biti problematično. Više administratora baza podataka ne bi smjelo istovremeno pokretati Activity Monitor na istom poslužitelju.
Za nadzor produkcije, razmotrite jednostavne alternative poput planiranih DMV snimaka pohranjenih u bazi podataka za nadzor ili koristite usmjeravanje samo za čitanje za nadzor sekundarnih replika u konfiguracijama Always On.
7. Najbolje prakse za korištenje Monitora aktivnosti
Slijeđenje najboljih praksi osigurava maksimalnu vrijednost od Activity Monitora uz minimiziranje negativnih utjecaja na vaše poslužitelje.
7.1 Kada koristiti Monitor aktivnosti
Monitor aktivnosti blista u određenim scenarijima. Koristite ga kada su njegove prednosti usklađene s vašim potrebama.
7.1.1 Problemi s performansama u stvarnom vremenu
Monitor aktivnosti idealan je kada korisnici trenutno imaju problema i trebate odmah dijagnosticirati problem. Prikaz u stvarnom vremenu pomaže vam da vidite što se upravo događa.
Kada dobijete poruku da je „aplikacija spora“, otvaranje Monitora aktivnosti trebao bi biti jedan od prvih koraka. Možete brzo utvrditi je li baza podataka zauzeta, blokirana ili neaktivna.
7.1.2 Istraga usporavanja aplikacije
Kada određena aplikacija prestane reagirati, Nadzor aktivnosti pomaže vam utvrditi jesu li uzrok problemi s bazom podataka. Filtrirajte okno Procesi prema nazivu aplikacije da biste vidjeli samo aktivnost baze podataka te aplikacije.
Ako aplikacija ne pokazuje aktivnost baze podataka dok korisnici prijavljuju probleme, problem leži negdje drugdje. Ako vidite opsežno blokiranje ili skupe upite, pronašli ste krivca.
7.1.3 Brze provjere stanja
Monitor aktivnosti pruža izvrsnu nadzornu ploču za brze provjere ispravnosti tijekom rutinske administracije. Otvorite ga, pogledajte grafikone Pregleda i provjerite izgleda li sve abnormalno.
Ova površna provjera traje nekoliko sekundi i može otkriti probleme prije nego što postanu kritični. Učinite je dijelom svoje svakodnevne rutine.
7.2 Optimalne postavke konfiguracije
Pravilno konfiguriranje Monitora aktivnosti poboljšava i njegovu korisnost i zauzetost resursima.
7.2.1 Preporučeni intervali osvježavanja
Uskladite interval osvježavanja sa svojom svrhom:
- Aktivno rješavanje problema: 10 sekundi pruža dobru reakciju uz razumne troškove.
- Prošireno praćenje: 30-60 sekundi smanjuje utjecaj na server tijekom duljih razdoblja promatranja.
- Dijagnoza kritičnog problema: 5 sekundi daje visoku granularnost kada je svaka sekunda važna, ali koristite kratko.
- Redovne zdravstvene kontrole: Ručno osvježavanje (interval od 1 sata) kada ne gledate aktivno.
Ne zaboravite zatvoriti Monitor aktivnosti kada završite. Postavljanjem dugog intervala i zaboravljanjem na njega trošite resurse poslužitelja.
7.2.2 Strategije filtriranja
Koristite filtere za fokusiranje na relevantne informacije i smanjenje kognitivnog opterećenja:
- Filtriraj procese po Baza podataka vidjeti samo aktivnosti na određenim bazama podataka.
- filtriraj proizvode Login za praćenje aktivnosti određenog korisnika.
- filtriraj proizvode Stanje zadatka = RUNNING za skrivanje neaktivnih sesija.
- filtriraj proizvode primjena izolirati promet od određenih programa.
- Prikaži samo neprazne elemente u Blokirao/la vidjeti samo blokirajuće situacije.
7.2.3 Odabir i sortiranje stupaca
Razviti sustavni pristup pregledavanju podataka Monitora aktivnosti:
- Započnite s pregledom: Provjerite grafove za očite skokove ili anomalije.
- Provjerite procese za blokiranje: Sortiraj po ID-u sesije, a zatim potraži vrijednosti za Blokirao/la.
- Pregled resursa čekanja: Sortiraj prema kumulativnom vremenu čekanja kako bi se identificirala uska grla resursa.
- Analizirajte skupe upite: Sortirajte prema različitim metrikama (CPU, izvršavanja, čitanja) kako biste pronašli različite vrste problema.
- Provjerite s I/O oknom: Potvrdite koreliraju li upiti intenzivne ulazno/izlazne operacije s visokom aktivnošću diska.
7.3 Integracija s drugim alatima
Monitor aktivnosti najbolje funkcionira kao dio šireg skupa alata, a ne kao samostalno rješenje.
7.3.1 Korištenje s SQL Server Profiler
Monitor aktivnosti i SQL Server Profiler se dobro nadopunjuje. Kada u Monitoru aktivnosti pronađete problematičnu sesiju, kliknite je desnom tipkom miša i odaberite Proces praćenja u SQL Server Profiler.
Ovim se pokreće Profiler s filterima koji su već konfigurirani za bilježenje samo aktivnosti te sesije. Vidite cijeli niz izvršenih naredbi, informacije o vremenu i poruke o pogreškama - detalje koje Monitor aktivnosti ne pruža.
Da biste saznali više o SQL Server Mogućnosti profilera i napredne tehnike praćenja, pogledajte naše opsežan SQL Server Vodič za profiliranje.
7.3.2 Dopunjavanje proširenim događajima
Prošireni događaji nude detaljno praćenje s niskim opterećenjem koje bilježi informacije koje Monitor aktivnosti propušta. Stvorite sesije proširenih događaja za praćenje određenih događaja poput zastoja, dugotrajnih upita ili prekomjernog ponovnog kompiliranja.
Koristite Monitor aktivnosti za trenutnu istragu i Proširene događaje za kontinuirano praćenje i povijesnu analizu. Dva alata zadovoljavaju različite potrebe.
Da biste saznali više o SQL Server Proširene mogućnosti događaja i napredne tehnike praćenja, pogledajte naše opsežan SQL Server Prošireni vodič za događaje.
7.3.3 Rješenja za nadzor trećih strana
Komercijalni alati poput SolarWinds Database Performance Analyzera, Redgate SQL Monitora i Quest Spotlighta pružaju značajke koje nedostaju Activity Monitoru: upozorenja, povijesni trendovi, planiranje kapaciteta i automatiziranu dijagnostiku.
Ovi alati su vrijedni dodaci Monitoru aktivnosti, a ne zamjene. Monitor aktivnosti ostaje koristan za brze provjere i istrage čak i kada su dostupni sofisticirani alati za praćenje.
7.4 uobičajenih pogrešaka koje treba izbjegavati
Razumijevanje uobičajenih pogrešaka u Monitoru aktivnosti pomaže vam da ga učinkovitije koristite.
7.4.1 Ostavljanje Monitora aktivnosti u neprekidnom radu
Najčešća pogreška je otvaranje Monitora aktivnosti i ostavljanje da radi neograničeno. To troši resurse poslužitelja i pruža malo vrijednosti jer ne pratite aktivno.
Zatvorite Nadzor aktivnosti kada ga aktivno ne koristite. Ako vam je potrebno kontinuirano praćenje, umjesto toga implementirajte odgovarajuće rješenje za praćenje s planiranim prikupljanjem podataka.
7.4.2 Pretjerano oslanjanje samo na Monitor aktivnosti
Monitor aktivnosti pruža jednu perspektivu o zdravlju poslužitelja. Nemojte se oslanjati isključivo na njega. Dopunite ga Monitorom performansi sustava Windows za metrike na razini operativnog sustava, Proširenim događajima za detaljno praćenje i analizom plana izvršenja za podešavanje upita.
Monitor aktivnosti pomaže vam u prepoznavanju problema, ali njihovo rješavanje često zahtijeva dodatne alate i dublju analizu.
Saznajte više o SQL Server monitor performansi u našem potpuni vodič.
7.4.3 Ignoriranje povijesnih trendova
Monitor aktivnosti prikazuje trenutno stanje, ali problemi s performansama često imaju obrasce vidljive tek tijekom vremena. Implementirajte prikupljanje povijesnih podataka kako biste mogli usporediti trenutne metrike s osnovnim vrijednostima i identificirati trendove.
Bez povijesnog konteksta, možda nećete prepoznati da je današnja „normalna“ upotreba CPU-a 30% veća od prošlomjesečne osnovne vrijednosti, što ukazuje na postupno smanjenje opterećenja.
8. Rješavanje problema s praćenjem aktivnosti
Sam Monitor aktivnosti ponekad ima problema. Poznavanje načina rješavanja tih problema sprječava frustracije.
8.1 Monitor aktivnosti se ne otvara ili ne prikazuje nikakve podatke
Kada se Monitor aktivnosti otvori, ali prikazuje prazne okvire ili se uopće ne otvara, nekoliko čimbenika može biti odgovorno.
8.1.1 Problemi s dozvolama
Najčešći uzrok problema s Monitorom aktivnosti su nedovoljna dopuštenja. Za provjeru i rješavanje problema:
- Provjerite dozvole na razini poslužitelja:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Ako se ne vrate retci, nemate dozvolu VIEW SERVER STATE.
- Zamolite administratora poslužitelja da vam to odobri:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - Zatvorite i ponovno otvorite Monitor aktivnosti nakon što su dopuštenja odobrena.
8.1.2 Problemi s kompatibilnošću verzija
Korištenje stare verzije SQL Server Management Studio za povezivanje s novijim SQL Server Verzija može uzrokovati kvarove u Nadzoru aktivnosti. Alat možda neće razumjeti nove vrste čekanja ili stupce prikaza sustava.
Uvijek koristite verziju SSMS-a koja odgovara vašoj ili je novija od nje. SQL Server verzija. Microsoft nudi najnoviji SSMS kao besplatno preuzimanje odvojeno od SQL Server sebe.
8.1.3 Problemi s vatrozidom i mrežom
Monitor aktivnosti zahtijeva povezivanje s SQL Server instancu na standardnim portovima (zadano je 1433). Ako se možete povezati putem Object Explorera, ali Monitor aktivnosti ne uspijeva, pravila vatrozida možda blokiraju određene veze.
Provjerite može li vaš klijent doći do SQL Server stroj na svim potrebnim portovima. Provjerite i Windows Firewall i sve mrežne Firewallove između klijenta i poslužitelja.
8.2 Praćenje aktivnosti trajno pauzirano
Uobičajen problem, posebno u SQL Server 2019., otvara li se Monitor aktivnosti u pauziranom stanju i odbija nastaviti.
8.2.1 Razumijevanje pauziranog stanja
Kada se Nadzor aktivnosti pauzira, svi okviri prikazuju status "Pauzirano" s gumbom za nastavak koji možda neće funkcionirati. To vam onemogućuje da vidite bilo kakvu aktivnost poslužitelja.
Pauzirano stanje obično se javlja zbog problema s dopuštenjima, ograničenja udaljene veze ili grešaka u verziji SSMS-a, a ne zbog namjerne radnje pauziranja.
8.2.2 Uobičajeni uzroci
Monitor aktivnosti može ući u trajno pauzirano stanje zbog:
- Nedostaje dopuštenje VIEW SERVER STATE na novijim oknima dodanim u nedavno SQL Server inačice
- Udaljene veze onemogućene na SQL Server primjer
- Neuspješna autentifikacija za određene sistemske upite
- Greške u određenim SSMS verzijama, posebno od 18.0 do 18.3
- Problemi s povezivanjem između klijenta i poslužitelja
8.2.3 Koraci rješavanja
Za rješavanje problema s pauziranim stanjem Monitora aktivnosti:
- Ažuriranje SSMS-a: Preuzmite i instalirajte najnovije SQL Server Verzija Management Studija s Microsoftove web stranice. Mnoge greške pauziranog stanja ispravljene su u kasnijim izdanjima.
- Provjerite dozvole: Provjerite imate li dopuštenja VIEW SERVER STATE i VIEW ANY DEFINITION.
- Provjerite udaljene veze: Provjerite je li SQL Server instanca omogućuje udaljene veze:
EXEC sp_configure 'remote access';Ako je vrijednost 0, zamolite administratora da je omogući.
- Ponovno pokrenite SSMS: Ponekad jednostavno zatvorite sve prozore i ponovno pokrenite SQL Server Management Studio rješava problem.
- Povežite se s Windows autentifikacijom: Ako koristite SQL autentifikaciju, umjesto toga isprobajte Windows autentifikaciju jer ponekad zaobilazi probleme s pauziranjem povezanim s autentifikacijom.
8.3 Problemi s performansama pri korištenju Monitora aktivnosti
Ako sam Activity Monitor postane spor ili uzrokuje smanjenje performansi poslužitelja, potrebno je prilagoditi ga.
8.3.1 Smanjenje troškova praćenja
Kako biste smanjili utjecaj Monitora aktivnosti:
- Povećajte interval osvježavanja na 30 sekundi ili 1 minutu.
- Zatvorite okna koja ne koristite aktivno klikom na gumb za sažimanje.
- Kada su okna sažeta, Monitor aktivnosti ne šalje upite za podatke za njih.
- Izbjegavajte istovremeno pokretanje više instanci Activity Monitora.
- Potpuno zatvorite Monitor aktivnosti kada aktivno ne istražujete probleme.
8.3.2 Alternativne metode praćenja laganih sustava
Ako je Monitor aktivnosti previše zahtjevan za resurse u vašem okruženju, razmotrite alternative:
- Izravno upitajte DMV-ove: Napišite specifične T-SQL upite koji dohvaćaju samo potrebne informacije.
- Koristite sp_WhoIsActive: Ova pohranjena procedura je visoko optimizirana i obično ima niže opterećenje od Monitora aktivnosti.
- Implementirajte uzorkovanje: Planirajte poslove SQL Agenta koji redovito snimaju snimke DMV podataka i pohranjuju rezultate u tablice za kasniju analizu.
- Praćenje sekundarnih replika: In Grupe dostupnosti Always On, pokrenite Monitor aktivnosti na čitljivoj sekundarnoj platformi umjesto na primarnoj.
8.4 Netočne ili nedostajuće informacije
Ponekad Monitor aktivnosti prikazuje informacije koje se čine netočnima ili nepotpunima.
8.4.1 Provjera podataka s DMV-ima
Kada se rezultati Nadzora aktivnosti čine sumnjivima, provjerite ih izravnim upitom temeljnim DMV-ovima. Na primjer, ako okno Procesi ne prikazuje blokiranje, ali korisnici ga prijavljuju, upitajte:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Ako ovaj upit prikazuje blokiranje koje je Monitor aktivnosti propustio, potvrdili ste problem s prikazom.
8.4.2 Razumijevanje vremena osvježavanja podataka
Imajte na umu da Monitor aktivnosti prikazuje snimke stanja. Upit koji se izvršavao između intervala osvježavanja neće se pojaviti u Nedavnim skupim upitima osim ako njegov plan izvršavanja ostane u predmemoriji.
Slično tome, statistika čekanja u oknu Čekanje resursa odražava akumulaciju od posljednjeg snimka. Brzo promjenjiva radna opterećenja mogu pokazivati različite obrasce pri svakom osvježavanju.
9. Napredne tehnike praćenja aktivnosti
Iskusni administratori baza podataka koriste Activity Monitor na sofisticirane načine kako bi izvukli maksimalnu dijagnostičku vrijednost.
9.1 Kombiniranje više panela za analizu uzroka
Prava snaga Activity Monitora očituje se kada povežete informacije iz više panela kako biste razumjeli složene probleme s performansama.
9.1.1 Korelacija čekanja s procesima
Kada okno Čekanje resursa prikazuje duga vremena čekanja u kategoriji, upotrijebite okno Procesi kako biste identificirali koje sesije imaju ta čekanja:
- Obratite pozornost na kategoriju čekanja s visokim kumulativnim vremenom čekanja (npr. „Zaključavanje“).
- Prebacite se na okno Procesi.
- Poredaj po Vrsta čekanja grupirati sesije prema trenutnom čekanju.
- Potražite sesije koje prikazuju vrste čekanja u problematičnoj kategoriji.
- Za te sesije, provjerite Resursi čekanja stupac da biste vidjeli koji su objekti baze podataka uključeni.
- Kliknite desnom tipkom i odaberite Detaljnije da biste vidjeli tekst upita.
Ova korelacija vam pomaže da prijeđete s "imamo čekanja zaključavanja" na "ovaj specifični upit čeka zaključavanja na ovoj tablici".
9.1.2 Povezivanje skupih upita s problemima ulazno/izlaznih operacija
Kada okno Data File I/O prikazuje visoku aktivnost diska na određenoj bazi podataka:
- Obratite pozornost na to koje datoteke baze podataka imaju visoke brzine čitanja ili pisanja od MB/s.
- Prebaci se na Nedavne skupe upite.
- Poredaj po Fizičkih čitanja/sek za identifikaciju upita koji puno čitaju s diska.
- Filtrirajte ili vizualno identificirajte upite koji se izvršavaju na bazi podataka s visokim ulaskom/izlaskom.
- Pregledajte planove izvršavanja tih upita za skeniranje tablica ili nedostajuće indekse koji uzrokuju prekomjeran ulazno/izlazni promet.
Ova višekanalna analiza povezuje simptome (visok ulazno/izlazni promet na disku) s uzrocima (specifični neučinkoviti upiti).
9.2 Korištenje monitora aktivnosti za planiranje kapaciteta
Iako Monitor aktivnosti ne pohranjuje povijesne podatke, možete ga strateški koristiti za promatranja planiranja kapaciteta.
9.2.1 Identificiranje obrazaca vršne upotrebe
Pratite aktivnost poslužitelja u različito doba dana kako biste identificirali obrasce korištenja:
- Otvorite Monitor aktivnosti tijekom poznatih vršnih radnih sati.
- Zabilježite vršne vrijednosti grafa % vremena procesora.
- Zabilježite maksimalni broj zadataka na čekanju.
- Promatrajte zahtjeve za serijom/sek u vrijeme najveće gužve.
- Dokumentirajte najprometnije baze podataka u oknu Procesi.
- Ponovite izvan vršnih sati radi usporedbe.
Ako vrijeme procesora u vršnim satima stalno prelazi 80%, približavate se ograničenjima kapaciteta CPU-a. Slično tome, povećanje broja čekanja ukazuje na rastuću konkurenciju resursa.
9.2.2 Analiza trendova resursa
Iako Monitor aktivnosti prikazuje trenutno stanje, možete ga koristiti za provjeru trendova bilježenjem ključnih metrika tijekom vremena:
- Snimke zaslona okna Pregled pravite u isto vrijeme svaki dan
- Zabilježite vršne vrijednosti iz svakog grafa
- Usporedite tjedni pregled kako biste utvrdili trendove rasta
- Pratite postupno povećanje prosječnog vremena procesora ili brzine ulazno/izlaznih operacija.
Ovo ručno praćenje trendova nadopunjuje sofisticiranija rješenja za praćenje i pomaže u opravdavanju proširenja kapaciteta.
9.3 Dokumentiranje osnovnih vrijednosti performansi
Utvrđivanje osnovnih metrika performansi pomaže vam prepoznati kada se performanse smanjuju.
9.3.1 Prikupljanje osnovnih metrika
Tijekom razdoblja poznatih dobrih performansi, dokumentirajte metrike Monitora aktivnosti:
- Otvorite Monitor aktivnosti tijekom normalnog poslovanja (ne u vršnim ili izvanvršnim satima).
- Vrijednosti okna Pregled zapisa:
- Tipični raspon % vremena procesora
- Prosječan broj zadataka čekanja
- Normalna brzina ulazno/izlaznih operacija baze podataka
- Tipični zahtjevi za seriju/sek
- Napomena o kategorijama okna Čekanje resursa koje prikazuju najdulje vrijeme čekanja.
- Dokumentirajte broj aktivnih procesa obično u oknu Procesi.
- Zabilježite reprezentativne metrike izvršenja upita iz Nedavnih skupih upita.
Spremite ovu osnovnu dokumentaciju za buduću upotrebu prilikom istraživanja problema s performansama.
9.3.2 Usporedba trenutnih i osnovnih performansi
Kada se pojave problemi s performansama, usporedite trenutna očitanja Monitora aktivnosti s vašim dokumentiranim osnovnim vrijednostima:
- Je li vrijeme procesora znatno veće od osnovnog? Usredotočite se na upite koji intenzivno koriste CPU.
- Jesu li zadaci čekanja 2-3 puta veći od osnovnih razina? Istražite čekanja resursa.
- Je li ulazno/izlazni promet znatno veći? Provjerite okno ulazno/izlaznih podataka i skupe upite.
- Jesu li zahtjevi za serijskim aktivnostima manji od osnovnih tijekom vršnih sati? Potražite probleme s blokiranjem ili povezivanjem.
Ova usporedba vam pomaže da prepoznate što se promijenilo i da na odgovarajući način usmjerite napore za rješavanje problema.
9.4 Izrada prilagođenih tijekova rada za praćenje
Razviti sustavne tijekove rada za uobičajene scenarije istrage kako bi se osigurala temeljita i ponovljiva analiza.
9.4.1 Postupni postupak istrage
Kada korisnici prijave probleme s performansama, slijedite dosljedan tijek rada:
- Brza provjera zdravlja: Otvorite Monitor aktivnosti i skenirajte grafikone okna Pregled za očite anomalije.
- Provjerite blokiranje: Proširite okno Procesi, filtrirajte za Neprazne stavke u stupcu Blokirao.
- Identificirajte sukob resursa: Okno čekanja resursa pregleda sortirano prema vremenu čekanja.
- Pronađite skupe upite: Ispitajte nedavne skupe upite sortirane po CPU-u, zatim izvršenjima, a zatim čitanjima.
- Korelacija I/O obrazaca: Unakrsno referencirajte skupe upite s aktivnošću okna za ulazno/izlazne operacije s podatkovnom datotekom.
- Nalazi dokumenta: Napravite snimke zaslona i zabilježite relevantne ID-ove sesija, vrste čekanja i detalje upita.
- Duboko ronjenje: Koristite tragove Profilera, analizu plana izvršenja i DMV upite za detaljnu istragu identificiranih problema.
9.4.2 Kriteriji eskalacije
Utvrdite kriterije za eskalaciju problema u odnosu na nastavak istrage:
- Odmah eskalirajte: Lanci blokiranja traju >5 minuta, vrijeme procesora na 100% dulje od 2 minute, kritični sistemski procesi pokazuju stanje OBUSTAVLJENO.
- Eskalirajte s analizom: Ponavljajući skupi upiti koji troše >50% CPU-a, konzistentno visoka vremena odziva I/O >50ms, uzastopni neuspjesi dodjeljivanja memorije.
- Istražite dalje: Privremena čekanja koja se rješavaju unutar nekoliko minuta, upiti s neoptimalnim planovima, ali prihvatljivim performansama, manje blokiranje u trajanju <30 sekundi.
10. Monitor aktivnosti u različitim SQL Server verzije
Monitor aktivnosti se razvio tijekom SQL Server verzije, pri čemu svako izdanje donosi poboljšanja, a povremeno i nove probleme.
10.1 Monitor aktivnosti u SQL Server 2008 i novije
SQL Server 2008. godine predstavljen je moderni dizajn Activity Monitora koji je do danas uglavnom ostao nepromijenjen.
10.1.1 nove značajke uvedene u SQL Server 2008
The SQL Server Redizajn Activity Monitora iz 2008. donio je značajna poboljšanja:
- Grafička nadzorna ploča s grafikonima u stvarnom vremenu u oknu Pregled
- Sučelje okna koje se može proširiti/sklopiti zamjenjuje stari prikaz samo s mrežom
- Okno Nedavni skupi upiti prikazuje agregirane podatke o performansama upita
- Okno za ulazno/izlazne podatke datoteka za praćenje aktivnosti diska po datoteci
- Poboljšani okvir čekanja resursa s kategorizacijom čekanja
- Kontekstni izbornik desnom tipkom miša za radnje procesa poput prekidanja sesija i pokretanja Profilera
- Podesivi intervali osvježavanja od 1 sekunde do 1 sata
Ove su promjene transformirale Monitor aktivnosti iz jednostavnog popisa procesa u sveobuhvatnu nadzornu ploču za praćenje.
10.1.2 Promjene u odnosu na SQL Server 2005
SQL Server Monitor aktivnosti iz 2005. bio je daleko ograničeniji:
- Pristupa se putem mape Upravljanje u Exploreru objekata, a ne putem alatne trake
- Jedna mreža koja prikazuje popis procesa s osnovnim informacijama
- Nema grafičkih grafikona ili više panela
- Nema skupih upita ili nadzora ulazno/izlaznih operacija
- Ograničene statistike čekanja
Redizajn iz 2008. predstavljao je potpuno preispitivanje, a ne postupno poboljšanje.
10.2 Monitor aktivnosti u SQL Server 2014/2016
SQL Server U 2014. i 2016. godini uvedena su postupna poboljšanja u prikupljanju temeljnih podataka u Monitoru aktivnosti, ali malo vizualnih promjena.
10.2.1 Poboljšanja i nadogradnje
Ključna poboljšanja u ovim verzijama uključivala su:
- Bolje performanse pri praćenju servera s tisućama predmemoriranih planova
- Poboljšane mogućnosti filtriranja u oknu Procesi
- Poboljšana točnost agregacije statistike čekanja
- Bolje rukovanje sortiranjem i filtriranjem stupaca s velikim skupovima rezultata
- Učinkovitiji upiti DMV-a smanjuju opterećenje nadzora
Osnovno sučelje ostalo je konzistentno s SQL Server 2008., održavajući familijarnost za administratore.
10.3 Monitor aktivnosti u SQL Server 2019/2022
nedavni SQL Server verzije nastavljaju evoluciju Activity Monitora s fokusom na performanse i stabilnost.
10.3.1 Najnovije značajke i mogućnosti
SQL Server Monitor aktivnosti za 2019. i 2022. uključuje:
- Podrška za nove vrste čekanja uvedene u ovim verzijama
- Poboljšane performanse renderiranja u SSMS-u korištenjem WPF tehnologije
- Bolje rukovanje velikim brojem aktivnih sesija
- Poboljšana kompatibilnost s cloud SQL platformama
- Točnije metrike CPU-a i I/O-a
10.3.2 Poznati problemi u novijim verzijama
SQL Server 2019. je uvela nekoliko grešaka u Monitoru aktivnosti:
- Trajno pauzirano stanje: Monitor aktivnosti često ulazi u pauzirano stanje i neće se nastaviti, posebno u SSMS-u 18.0-18.3. Ispravljeno u kasnijim verzijama SSMS-a.
- Greške udaljenog povezivanja: Neke konfiguracije sprječavaju otvaranje Monitora aktivnosti na udaljenim instancama. Zaobilazna rješenja uključuju omogućavanje određenih zastavica praćenja ili korištenje novijih SSMS verzija.
- Problemi s dozvolama: Novi sistemski prikazi zahtijevaju dodatna dopuštenja koja nisu jasno dokumentirana, što uzrokuje prazne prikaze čak i s VIEW SERVER STATE.
Uvijek koristite najnoviju verziju SSMS-a pri radu s SQL Server 2019. i 2022. kako bi se izbjegli ovi problemi.
11. Praktični slučajevi i primjeri upotrebe
Primjeri iz stvarnog svijeta pokazuju kako učinkovito primijeniti Monitor aktivnosti u uobičajenim scenarijima rješavanja problema.
11.1 Studija slučaja: Dijagnosticiranje spore web aplikacije
Razvojni tim izvještava da je njihova web aplikacija postala neprihvatljivo spora, a učitavanje stranice traje 20-30 sekundi umjesto uobičajenih 2-3 sekunde.
11.1.1 Početna istraga s oknom pregleda
Otvorite Monitor aktivnosti i pregledajte okno Pregled:
- Grafikon % vremena procesora pokazuje 85-95% iskorištenosti procesora, što je znatno više od normalne osnovne vrijednosti od 30-40%.
- Broj zadataka na čekanju varira između 10 i 20 zadataka, u odnosu na normalnu početnu vrijednost od 0 do 3.
- Ulazno/izlazni promet baze podataka pokazuje umjerenu aktivnost oko 50 MB/s.
- Broj zahtjeva za pakete/sek je niži od očekivanog, 100/sek, u odnosu na tipičnih 300-400/sek tijekom radnog vremena.
Ovaj obrazac ukazuje na usko grlo CPU-a s konkurencijom resursa koja uzrokuje smanjenu propusnost. Poslužitelj radi naporno, ali ne obrađuje mnogo zahtjeva.
11.1.2 Identificiranje problematičnog upita
Proširite okno Nedavni skupi upiti i sortirajte po Izvršenjima/min:
- Najpopularniji upit pokazuje 15 000 izvršavanja u minuti.
- Kliknite desnom tipkom i odaberite Uredi tekst upita ispitati upit.
- Upit je jednostavna SELECT naredba koja dohvaća zapis jednog korisnika:
SELECT * FROM Users WHERE UserId = @UserId. - Ovaj upit ne bi trebao biti izvršavan 15 000 puta u minuti za normalno korištenje aplikacije.
Desnom tipkom miša kliknite upit i odaberite Prikaži plan izvršenjaPlan prikazuje skeniranje tablice Korisnici s upozorenjem o nedostajućem indeksu u stupcu UserId.
Filtrirajte okno Procesi prema aplikaciji kako biste prikazali samo veze web aplikacije. Više sesija prikazuje isti upit koji se ponavlja.
11.1.3 Rješavanje i provjera
Problem proizlazi iz dvaju razloga: prekomjernog broja izvršavanja upita i nedostajućeg indeksa. Koraci rješavanja:
- Kreirajte nedostajući indeks:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Kontaktirajte razvojni tim o prekomjernim izvršavanjima. Istraga otkriva problem N+1 upita u kodu aplikacije gdje petlja dohvaća korisničke podatke za svaku stavku na popisu.
- Izmijenite aplikaciju grupirati korisničke pretrage u jedan upit pomoću IN klauzule ili parametra s tabličnom vrijednošću.
- Provjerite ispravak praćenjem Monitora aktivnosti nakon implementacije. Iskorištenost CPU-a pada na 35-40%, broj izvršenja u minuti smanjuje se na 200-300, a vrijeme odziva aplikacije vraća se u normalu.
11.2 Studija slučaja: Rješavanje problema blokiranja
Korisnici izvještavaju da se sustav za unos narudžbi periodično zamrzava na 30-60 sekundi prije nego što nastavi s normalnim radom.
11.2.1 Detekcija lanca blokiranja
Otvorite Monitor aktivnosti tijekom jednog od ovih zamrzavanja i proširite okno Procesi:
- Poredaj po ID sesije kako biste vidjeli sve organizirane sesije.
- Više sesija prikazuje vrijednosti u Blokirao/la stupac, svi pokazuju na ID sesije 73.
- Sesija 73 prikazuje '1' u Bloker za glavu stupac, potvrđujući da je to glavni uzrok.
- The Vrsta čekanja za blokirane sesije prikazuje LCK_M_X, što ukazuje da čekaju ekskluzivne brave.
- The Resursi čekanja Stupac otkriva da je blokiranje na tablici Narudžbe.
11.2.2 Analiza uzroka
Desnom tipkom miša kliknite Sesiju 73 i odaberite Detaljnije za pregled naredbe:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
Ovo ažuriranje dio je posla skupne obrade koji se izvršava svaki sat. Provjera Login Stupac potvrđuje da sesija pripada računu usluge skupne obrade.
Upit drži brave na tablici Narudžbe dok obrađuje tisuće narudžbi. Vrijeme cekanja za blokirane sesije stalno raste, što potvrđuje da je problem u ovoj dugotrajnoj operaciji.
11.2.3 Implementacija ispravka
Kratkoročno rješenje:
- Detalji dokumentirane sesije 73, uključujući tekst upita i trajanje.
- Dopustite da se ažuriranje prirodno dovrši jer se radi o legitimnoj skupnoj obradi.
- Nakon završetka, provjerite jesu li blokirane sesije obrisane i je li nastavljen normalan rad.
Dugoročna implementirana rješenja:
- Ponovno zakazivanje serijskog zadatka raditi izvan vršnih sati (2-4 ujutro umjesto tijekom radnog vremena).
- Izmijenite skupnu obradu ažurirati narudžbe u manjim serijama od po 100 zapisa odjednom, otključavajući između serija.
- Dodaj indeks u stupcu OrderId kako bi se ubrzao postupak ažuriranja.
- Razmotrite izolaciju SNAPSHOT-a za operacije čitanja kako bi se smanjio utjecaj blokiranja.
11.3 Studija slučaja: Identificiranje prekomjernih izvršavanja upita
Praćenje baze podataka pokazuje da se korištenje CPU-a postupno povećavalo tijekom proteklog mjeseca, ali nisu se dogodile očite promjene u kodu aplikacije.
11.3.1 Uočavanje abnormalnog broja izvršenja
Otvorite Nadzor aktivnosti i pregledajte okno Nedavni skupi upiti:
- Poredaj po Izvršenja/min kako biste vidjeli najčešće izvršavane upite.
- Najpopularniji upit pokazuje 37 000 izvršavanja u minuti - daleko više od bilo kojeg drugog upita.
- Kliknite desnom tipkom i odaberite Uredi tekst upita.
- Upit dohvaća podatke o kategoriji proizvoda:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - Ovaj jednostavni upit trebao bi biti brz i predmemoriran, a ipak se izvršava desetke tisuća puta u minuti.
11.3.2 Praćenje do aplikacijskog koda
U oknu Procesi pronađite sesije koje izvršavaju ovaj upit:
- Napomena primjena U stupcu se prikazuje „Usluga kataloga proizvoda“.
- Desnom tipkom miša kliknite jednu od ovih sesija i odaberite Proces praćenja u SQL Server Profiler.
- SQL Profiler otkriva da se upit izvršava više puta u brzom slijedu s različitim vrijednostima CategoryId.
- Za pregled koda obratite se razvojnom timu koji upravlja ProductCatalogService.
Pregled koda otkriva problem: nedavna promjena dohvaća popise proizvoda s kategorijama. Za svaki proizvod u skupu rezultata (često više od 1,000 proizvoda), kod upućuje zaseban poziv bazi podataka kako bi dohvatio informacije o kategoriji - klasični problem upita N+1.
11.3.3 Optimizacija aplikacije
Implementirajte odgovarajući popravak:
- Izmijenite upit aplikacije za korištenje JOIN-a za dohvaćanje proizvoda i njihovih kategorija u jednom pozivu baze podataka:
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; - Implementirajte ažurirani kod i pratite Monitor aktivnosti.
- Provjerite ispravku: Broj izvršenja u minuti za upit kategorije pada s 37 000 na manje od 100, a ukupna upotreba CPU-a smanjuje se za 40%.
- Dokumentirajte naučenu lekciju i podijelite s razvojnim timom kako biste spriječili slične probleme u budućim promjenama koda.
12. Otkrivanje potencijalne korupcije u bazi podataka
Iako Monitor aktivnosti nije posebno dizajniran za otkrivanje korupcije u bazi podataka, određeni obrasci u njegovom prikazu mogu ukazivati na temeljne probleme s korupcijom koji zahtijevaju daljnju istragu.
12.1 Simptomi potencijalne korupcije baze podataka
Ako postoji oštećenje baze podataka i ako joj se pristupa, povremeno možete vidjeti:
1. U oknu Procesi:
- Sesije zaglavljene u OBUSTAVLJENOM stanju s neobičnim vrstama čekanja
- Procesi koji prikazuju stanja grešaka
- Upiti koji više puta ne uspijevaju
2. U oknu Čekanje resursa:
- Neobične vrste čekanja povezane s I/O operacijama koje bi mogle ukazivati na probleme s diskom (iako ovo vjerojatnije ukazuje na probleme s hardverom, a ne na logičku korupciju)
3. U Nedavnim skupim upitima:
- Upiti s neuobičajeno visokim fizičkim čitanjima ako opetovano pokušavaju čitati oštećene stranice
12.2 Dodatna provjera s DBCC CHECKDB
Kada Monitor aktivnosti prikazuje simptome koji ukazuju na potencijalnu korupciju, trebali biste odmah pokrenuti DBCC CHECKDB kako biste provjerili integritet baze podataka. Ova naredba skenira sve stranice baze podataka, provjerava kontrolne zbrojeve i provjerava logičke pogreške konzistentnosti.
Za više informacija o korištenju DBCC CHECKDB za provjeru i ispravljanje oštećenja baze podataka, pogledajte naše sveobuhvatni vodič za DBCC CHECKDB.
12.3 Popravak profesionalnim alatima
Ako DBCC CHECKDB potvrdi oštećenje baze podataka, imate nekoliko mogućnosti za popravak:
- Preferirani pristup je vraćanje iz poznate ispravne sigurnosne kopije. Vidi naš sveobuhvatni vodič o tome kako napraviti sigurnosnu kopiju i vratiti podatke SQL Server baze podataka.
- Za manje probleme, DBCC CHECKDB s REPAIR_REBUILD može riješiti probleme.
- Za kritične baze podataka bez nedavnih sigurnosnih kopija, profesionalno Softver za oporavak SQL-a i usluge često mogu oporaviti podatke koje ugrađene opcije popravka ne mogu.
13. Zaključak
SQL Server Activity Monitor je neprocjenjiv alat za administratore baza podataka, pružajući neposredan uvid u performanse poslužitelja i pomažući u brzoj i učinkovitoj dijagnostici problema.
13.1 Sažetak ključnih točaka
U ovom smo vodiču istražili kako vam Monitor aktivnosti pomaže u razumijevanju i rješavanju problema SQL Server izvođenje:
- Monitor aktivnosti pruža uvid u procese, čekanja, upite i I/O operacije u stvarnom vremenu putem organiziranog grafičkog sučelja.
- Pet panela - Pregled, Procesi, Čekanje resursa, Ulazno/izlazni podaci datoteka i Nedavni skupi upiti - svaki nudi jedinstvene perspektive o aktivnosti poslužitelja.
- Uobičajeni scenariji rješavanja problema poput prekomjernog izvršavanja upita, lanaca blokiranja i visoke upotrebe CPU-a postaju upravljivi sustavnom istragom Monitora aktivnosti.
- Iako moćan, Monitor aktivnosti ima ograničenja, uključujući nedostatak povijesnih podataka, grupiranje tipova čekanja i opterećenje nadzora koji utječu na njegovu primjenjivost.
- Dopunjavanje Monitora aktivnosti s DMV upitima, sp_WhoIsActive, proširenim događajima i potencijalno alatima trećih strana stvara sveobuhvatnu strategiju praćenja.
- Slijeđenje najboljih praksi za intervale osvježavanja, zatvaranje Monitora aktivnosti kada se ne koristi i kombiniranje više okna za korelaciju maksimizira njegovu vrijednost uz minimiziranje utjecaja.
13.2 Monitor aktivnosti kao dio vašeg kompleta alata
Monitor aktivnosti trebao bi vam služiti kao prvi alat za istraživanje performansi, a ne kao jedini alat. Njegova snaga leži u pružanju trenutne vidljivosti tijekom aktivnog rješavanja problema, pomažući vam da brzo utvrdite je li baza podataka usko grlo i identificirate koje specifične aspekte treba dublje istražiti.
Zamislite Monitor aktivnosti kao analogiju nadzorne ploče u vašem automobilu - odmah vam govori ako nešto nije u redu i pomaže vam da prepoznate općenito područje problema. Baš kao što vam nadzorna ploča vašeg automobila ne govori točno zašto je upalila lampica za provjeru motora, Monitor aktivnosti vas upućuje na probleme bez da uvijek otkriva njihov potpuni uzrok. Ta dublja analiza zahtijeva dodatne alate i stručnost.
Integrirajte Monitor aktivnosti u širi skup alata koji uključuje analizu plana izvršenja, praćenje statistike čekanja, rješenja za povijesno praćenje i najbolje prakse za performanse. Koristite ga zajedno s odgovarajućim strategijama indeksiranja, tehnikama optimizacije upita i planiranjem kapaciteta.
13.3 Nastavak vašeg puta učenja
Savladavanje Activity Monitora samo je jedan korak u postajanju učinkovitim administratorom baze podataka. Nastavite razvijati svoje vještine tako što ćete:
- Učenje tumačenja planova izvršenja i prepoznavanje neučinkovitih operacija
- Razumijevanje SQL Server statistike čekanja i njihove implikacije
- Proučavanje tehnika dizajna i optimizacije indeksa
- Istraživanje SQL ServerArhitektura i način na koji obrađuje upite
- Vježbanje sustavnih metodologija rješavanja problema
- Izgradnja iskustva s proširenim događajima za detaljno praćenje
- Razumijevanje razina izolacije transakcija i njihovog utjecaja na performanse
Svako istraživanje performansi pomoću Activity Monitora uči vas nečemu novom o tome kako SQL Server funkcionira i kako aplikacije komuniciraju s bazama podataka. Dokumentirajte svoja otkrića, podijelite znanje s kolegama i izgradite biblioteku rješenja za uobičajene probleme.
13.4 Dodatni izvori
Proširite svoje znanje ovim vrijednim resursima:
- Otvorite Monitor aktivnosti u SQL Server Management Studio (SSMS)
: Službenik SQL Server dokumentacija o tome kako otvoriti Monitor aktivnosti u SQL Server Management Studio (SSMS).
- Aktivnost Monitor
: Službeno SQL Server dokument o tome kako koristiti Monitor aktivnosti.
14. Često postavljana pitanja (FAQ)
P: Što je SQL Server Monitor aktivnosti?
A: SQL Server Monitor aktivnosti je ugrađeni alat unutar SQL Server Management Studio koji prikazuje informacije u stvarnom vremenu o procesima koji se izvršavaju na SQL Server instancu i njihov utjecaj na resurse poslužitelja. Pruža grafičku nadzornu ploču s pet okvira koji prikazuju različite aspekte aktivnosti poslužitelja, uključujući korištenje procesora, zadatke čekanja, brzine ulazno/izlaznih operacija, aktivne sesije i skupe upite.
P: Kako otvoriti Monitor aktivnosti u SSMS-u?
A: Monitor aktivnosti možete otvoriti na četiri načina: (1) Kliknite ikonu Monitor aktivnosti u alatnoj traci SSMS-a, (2) Desnom tipkom miša kliknite svoj SQL Server naziv instance u Object Exploreru i odaberite Aktivnost Monitor, (3) Pritisnite Ctrl + drugo + Aili (4) Konfigurirajte SSMS da se automatski pokreće putem Alati -> Opcije -> okolina -> Stavljanje u pogon.
P: Koje dozvole su mi potrebne za korištenje Monitora aktivnosti?
O: Trebate PRIKAŽI STANJE POSLUŽITELJA dopuštenje za pregled većine informacija iz Monitora aktivnosti. Za okno U/I za podatkovne datoteke također vam je potrebno jedno od STVORI BAZU PODATAKA, IZMIJENI BILO KOJU BAZU PODATAKA, ili POGLEDAJTE BILO KOJU DEFINICIJU dozvole. Bez tih dozvola, Monitor aktivnosti može se otvoriti, ali prikazivati prazne okvire.
P: Zašto je moj Monitor aktivnosti pauziran ili ne radi?
A: Nadzor aktivnosti obično se pauzira zbog problema s dopuštenjima, zastarjelih verzija SSMS-a ili onemogućenih udaljenih veza. Za rješavanje problema: (1) Ažurirajte na najnoviju verziju SSMS-a, (2) Provjerite imate li dopuštenje VIEW SERVER STATE, (3) Provjerite jesu li udaljene veze omogućene na SQL Server primjer, (4) Ponovno pokrenite SSMS i (5) Pokušajte se povezati s Windows autentifikacijom umjesto SQL autentifikacije ako je primjenjivo.
P: Koja je razlika između Monitora aktivnosti i sp_WhoIsActive?
A: Monitor aktivnosti je grafički alat ugrađen u SSMS koji pruža organizirane okvire za različite aspekte praćenja. sp_WhoIsActive je besplatna pohranjena procedura koju je kreirala zajednica i koja vraća detaljne informacije o sesiji u jednom skupu rezultata s preciznijim vrstama čekanja, detaljima blokiranja i opcijama prilagodbe od Monitora aktivnosti. Monitor aktivnosti je bolji za vizualno istraživanje, dok sp_WhoIsActive izvrsno funkcionira u skriptiranom praćenju i pruža detaljnije informacije.
P: Utječe li Monitor aktivnosti na performanse poslužitelja?
O: Da, Activity Monitor ima mjerljivo opterećenje jer ispituje sistemske DMV-ove pri svakom intervalu osvježavanja. Utjecaj se povećava s nižim brzinama osvježavanja - Microsoft upozorava da intervali kraći od 10 sekundi mogu utjecati na performanse poslužitelja. Uvijek zatvorite Activity Monitor kada ga aktivno ne koristite i razmislite o intervalima osvježavanja od 30-60 sekundi na produkcijskim poslužiteljima pod velikim opterećenjem.
P: Mogu li dobiti podatke iz Activity Monitora pomoću T-SQL-a?
A: Da, Monitor aktivnosti šalje upite prikazima dinamičkog upravljanja sustavom kao što su sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats i sys.dm_exec_query_stats. Možete izravno upitati ove DMV-ove pomoću T-SQL-a za programsko dohvaćanje ekvivalentnih informacija, omogućujući prilagođene skripte za praćenje i automatizirano prikupljanje podataka.
P: Koji je zadani interval osvježavanja?
A: Zadani interval osvježavanja je 10 sekundi. To možete promijeniti tako da desnom tipkom miša kliknete bilo gdje u oknu Pregled i odaberete Interval osvježavanjai odabirom unaprijed definiranih opcija: 1 sekunda, 5 sekundi, 10 sekundi, 30 sekundi, 1 minuta ili 1 sat. Kraći intervali pružaju više prikaza u stvarnom vremenu, ali povećavaju opterećenje nadzora.
P: Kako mogu automatski otvoriti Monitor aktivnosti pri pokretanju SSMS-a?
A: Konfigurirajte automatsko pokretanje putem SSMS opcija: Idite na Alati -> Opcije -> okolina -> Stavljanje u pogon, A zatim odaberite Otvorite Object Explorer i Activity Monitor od Pri pokretanju padajući izbornik. Monitor aktivnosti automatski će se otvoriti svaki put kada se povežete s poslužiteljem u SSMS-u.
P: Koja su ograničenja Monitora aktivnosti?
A: Ključna ograničenja uključuju: (1) Nema mogućnosti pohrane povijesnih podataka ili praćenja trendova, (2) Vrste čekanja su grupirane u kategorije umjesto da se prikazuju posebno, (3) Neke vrste čekanja poput CXPACKET-a se možda neće pojaviti, (4) Snimke u određenom trenutku mogu propustiti prolazne probleme, (5) Nadprosječni troškovi praćenja mogu utjecati na zauzete poslužitelje, (6) Nema mehanizma upozorenja za proaktivno praćenje i (7) Ne mogu se agregirati podaci iz više SQL Server instance. Za te potrebe nadopunite Monitor aktivnosti proširenim događajima, skupovima za prikupljanje podataka ili alatima za praćenje trećih strana.
O Autor:
Yuan Sheng je viši administrator baze podataka (DBA) s preko 10 godina iskustva u SQL Server okruženja i upravljanje bazama podataka poduzeća. Uspješno je riješio stotine scenarija oporavka baza podataka u financijskim uslugama, zdravstvu i proizvodnim organizacijama.
Yuan se specijalizirao za SQL Server oporavak baze podataka, rješenja visoke dostupnostii optimizaciju performansi. Njegovo opsežno praktično iskustvo uključuje upravljanje bazama podataka od više terabajta, implementaciju grupa dostupnosti Always On i razvoj automatiziranih strategija sigurnosnog kopiranja i oporavka za ključne poslovne sustave.
Svojim tehničkim znanjem i praktičnim pristupom, Yuan se usredotočuje na stvaranje sveobuhvatnih vodiča koji pomažu administratorima baza podataka i IT stručnjacima u rješavanju složenih SQL Server učinkovito rješava izazove. Ostaje u toku s najnovijim SQL Server izdanja i Microsoftove razvojne tehnologije baza podataka, redovito testirajući scenarije oporavka kako bi osigurao da njegove preporuke odražavaju najbolje prakse iz stvarnog svijeta.
Imate pitanja o SQL Server oporavak ili trebate dodatne upute za rješavanje problema s bazom podataka? Yuan pozdravlja povratne informacije i sugestije za poboljšanje ovih tehničkih resursa.


















