Podijeli sada:
Sadržaj sakriti

1. Uvod

1.1 Šta je SQL Server ActivityMonitor?

SQL Server Monitor aktivnosti je ugrađeni dijagnostički alat unutar SQL Server Management Studio koji prikazuje informacije o SQL Server procese i njihov uticaj na performanse servera. Omogućava vam praćenje SQL Server procese, nadgledaju čekanje resursa, analiziraju skupe upite i posmatraju obrasce ulazno/izlaznih operacija – sve iz jednog interfejsa.

SQL Server Monitor Monitor

1.2 Zašto koristiti SQL Server ActivityMonitor?

Monitor aktivnosti služi kao vaša prva linija odbrane 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 identificiranju uobičajenih problema kao što su blokiranje sesija, upiti koji intenzivno koriste CPU, prekomjerno izvršavanje upita i uska grla u ulazno/izlaznim operacijama. Kada korisnici prijave da je aplikacija spora ili ne reagira, Activity Monitor vam pomaže da utvrdite da li je krivac server baze podataka.

Za administratore baza podataka koji ne rade sa SQL Server Svakodnevno, Activity Monitor nudi pristupačnu početnu tačku za razumijevanje aktivnosti servera. Čak ga i iskusni administratori baza podataka koriste kao početnu tačku za istraživanje performansi.

1.3 Praćenje aktivnosti u odnosu na druge alate za praćenje

Iako je Monitor aktivnosti vrijedan, važno je razumjeti kako se poredi s drugim opcijama praćenja:

Monitor aktivnosti u poređenju sa sp_WhoIsActive: Monitor aktivnosti pruža grafički interfejs s više panela, dok je sp_WhoIsActive sveobuhvatna pohranjena procedura koja nudi detaljnije informacije u jednom skupu rezultata. sp_WhoIsActive prikazuje specifične tipove čekanja koje Monitor aktivnosti grupira i pruža detaljnije informacije o blokiranju.

Monitor aktivnosti u poređenju sa 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 historijsko praćenje, upozoravanje 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 administratore baza podataka:

  • Nulti trošak: Kao ugrađeni SQL Server Funkcija Management Studio, ne zahtijeva licencu niti napor za implementaciju.
  • Praćenje u realnom vremenu: Pratite trenutnu aktivnost servera u trenutku kada se dešava, sa podesivim intervalima osvježavanja od 1 sekunde do 1 sata.
  • Integrisane akcije: Kliknite desnim tasterom miša na procese da biste prekinuli sesije, pregledali detalje upita ili pokrenuli SQL Server Tragovi profilera - sve iz alata.
  • Više perspektiva: Pogledajte stanje servera iz različitih uglova putem pet specijaliziranih panela, od kojih se svaki fokusira na specifične aspekte performansi.
  • Brzo rješavanje problema: Identifikujte najčešće probleme s performansama u roku od nekoliko minuta, ubrzavajući prosječno vrijeme potrebno za rješavanje.
  • Niska barijera za ulazak: Nije potrebno napredno znanje da biste efikasno počeli koristiti alat, iako je potrebno dublje znanje. SQL Server stručnost pomaže u interpretaciji.

2. Početak rada s Monitorom aktivnosti

Prije nego što budete mogli efikasno koristiti Activity Monitor, morate razumjeti preduvjete, potrebne dozvole i različite metode za pokretanje alata.

2.1 Preduslovi i sistemski zahtjevi

Koristiti SQL Server Monitor aktivnosti, potreban vam je SQL Server Management Studio (SSMS) instaliran na vašem lokalnom računaru ili jump serveru. Alat Activity Monitor je značajno redizajniran u SQL Server 2008. godine, tako da se informacije u ovom vodiču odnose na SQL Server 2008 i novije verzije.

Morate imati mrežnu vezu sa SQL Server instancu koju želite pratiti. Za baze podataka hostovane u oblaku, obično će vam trebati VPN veza ili pravilno konfigurirana pravila zaštitnog zida (firewalla) 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čunaru unutar SSMS-a, tako da na resurse servera utiču samo upiti za praćenje koje izvršava.

2.2 Potrebna odobrenja

Ispravne dozvole su neophodne za ispravno funkcionisanje Monitora aktivnosti. Bez odgovarajućih dozvola, možete vidjeti prazan ekran ili dobiti greške o odbijanju pristupa.

2.2.1 Dozvola za PREGLED STANJA SERVERA

The POGLED STANJA SERVERA Dozvola je primarni uslov za korištenje Monitora aktivnosti. Ova dozvola na nivou servera vam omogućava da vidite sve aktivne procese i njihove povezane metrike.

Da bi dodijelio ovu dozvolu, administrator servera 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 panela.

2.2.2 Dozvole na nivou baze podataka

Da biste vidjeli informacije u oknu Data File I/O, potrebne su vam dodatne dozvole. Konkretno, morate imati jednu od sljedećih kombinacija:

  • CREATE DATABASE dozvola, ili
  • IZMIJENI BILO KOJU BAZU PODATAKA dozvola, ili
  • POGLEDAJTE BILO KOJU DEFINICIJU dozvolu

Ove dozvole moraju biti kombinovane sa POGLED STANJA SERVERA za punu funkcionalnost Monitora aktivnosti.

2.2.3 Rješavanje problema s dozvolama

Ako se Monitor aktivnosti otvori, ali ne prikazuje podatke, najčešći uzrok su dozvole. Provjerite da li je vašoj prijavi odobren VIEW SERVER STATE na nivou servera. Dozvole možete provjeriti pokretanjem:

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

Potražite 'VIEW SERVER STATE' u koloni permission_name. Ako nedostaje, kontaktirajte administratora baze podataka da vam je odobri.

2.3 Kako otvoriti Monitor aktivnosti u SSMS-u

SQL Server Management Studio nudi četiri različite metode za pokretanje Activity Monitora, dajući vam fleksibilnost na osnovu vaših preferencija radnog procesa.

2.3.1 Metod 1: Iz alatne trake

Najbrži način za otvaranje Monitora aktivnosti je korištenje ikone alatne trake:

  1. Povežite se sa svojim SQL Server instanca u SQL Server ManagementStudio.
  2. Pronađite ikonu Monitor aktivnosti u standardnoj alatnoj traci (podsjeća na stupčasti grafikon sa zelenim dugmetom za reprodukciju).
  3. Kliknite na ikonu da biste pokrenuli Monitor aktivnosti.

Start SQL Server Monitor aktivnosti iz ikone alatne trake u SQL Server ManagementStudio.

Ova metoda je najbrža kada već radite u SSMS-u i trebate brzo provjeriti aktivnost servera.

2.3.2 Metod 2: Iz Istraživača objekata

Također možete pokrenuti Activity Monitor direktno iz Object Explorera:

  1. U Exploreru objekata pronađite SQL Server instancu koju želite pratiti.
  2. Kliknite desnim tasterom miša na naziv instance.
  3. izabrati Monitor Monitor iz kontekstnog menija.

Start SQL Server Monitor aktivnosti klikom desne tipke miša na instancu u Object Exploreru u SQL Server ManagementStudio.

Ova metoda je korisna prilikom povezivanja na više servera, jer osigurava da pratite ispravnu instancu.

2.3.3 Metod 3: Korištenje prečice na tastaturi

Za korisnike koji se fokusiraju na tastaturu, SQL Server Management Studio pruža posebnu prečicu:

  1. Provjerite je li SSMS aktivni prozor i jeste li povezani s instancom.
  2. pritisnuti Ctrl + alt + A.
  3. Monitor aktivnosti će se otvoriti za trenutno odabranu instancu u Object Exploreru.

Imajte na umu da će se Activity Monitor povezati s instancom servera koju ste odabrali u Object Exploreru, stoga se uvjerite da ste odabrali ispravnu instancu prije korištenja ove prečice.

2.3.4 Metod 4: Iz menija s opcijama (Konfiguracija pokretanja)

Ako često koristite Activity Monitor, možete konfigurirati SSMS da ga automatski pokreće svaki put kada pokrenete aplikaciju:

  1. In SQL Server Management Studio, idite na Alat -> mogućnosti.
  2. U dijalogu Opcije proširite ambijent, a zatim izaberite Startup.
  3. Iz Prilikom pokretanja padajuća lista, odaberite Otvorite Explorer objekata i Monitor aktivnosti.
  4. izabrati OK.

Postavite konfiguraciju pokretanja za SQL Server Monitor aktivnosti u SQL Server ManagementStudio.

Sljedeći put kada pokrenete SSMS i povežete se sa serverom, Monitor aktivnosti će se automatski otvoriti zajedno sa Istraživačem objekata.

3. Razumijevanje panela za praćenje aktivnosti

Monitor aktivnosti organizuje informacije u pet proširivih panela, od kojih svaki pruža drugačiju perspektivu na aktivnost servera. Razumijevanje onoga što svaki panel prikazuje ključno je za efikasno 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 grafikoni se ažuriraju u konfigurabilnim intervalima i pomažu vam da na prvi pogled prepoznate abnormalne obrasce.

Okno za pregled u SQL Server Monitor aktivnosti.

3.1.1 % Vrijeme procesora

Ovaj grafikon prikazuje procenat 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 servera.

Ako stalno vidite da je vrijeme procesora na ili blizu 100%, vaš server je ograničen CPU-om. To može ukazivati ​​na neefikasne upite, nedostajuće indekse ili nedovoljan hardverski kapacitet. Koristite okno Nedavni skupi upiti da biste identificirali koji upiti troše najviše CPU-a.

3.1.2 Zadaci čekanja

Ova metrika prikazuje broj zadataka koji čekaju oslobađanje resursa prije nego što mogu nastaviti s radom. Zadaci mogu čekati na CPU, I/O, memoriju ili zaključavanja.

Konstantno visok broj zadataka na čekanju ukazuje na sukob resursa. Okno Čekanje resursa pruža više detalja o tome koje vrste resursa uzrokuju čekanja.

3.1.3 Ulazno/izlazni podaci baze podataka (MB/s)

Ovaj grafikon prikazuje brzinu prijenosa podataka između memorije i diska. Kombinuje i čitanje i pisanje, mjereno u megabajtima po sekundi.

Vrtoglavi porasti u ulazno/izlaznim aktivnostima baze podataka mogu ukazivati ​​na upite koji vrše skeniranje velikih tabela, prekomjernu aktivnost evidentiranja ili operacije kontrolnih tačaka. Okno za ulazno/izlazne aktivnosti datoteka podataka analizira ulazno/izlazne aktivnosti po bazi podataka i datoteci.

3.1.4 Grupni zahtjevi/sek

Ova metrika predstavlja broj SQL Server serije koje instanca primi u sekundi. Serija može biti jedna naredba ili više naredbi poslanih zajedno.

Ova vrijednost vam daje uvid u ukupnu aktivnost servera. Nagli padovi u paketnim zahtjevima tokom redovnog 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:

  1. Kliknite desnim tasterom miša bilo gde u oknu Pregled.
  2. izabrati Interval osvježavanja.
  3. Odaberite interval iz unaprijed definiranih vrijednosti: 1 sekunda, 5 sekundi, 10 sekundi (zadano), 30 sekundi, 1 minuta ili 1 sat.

Postavite interval osvježavanja u SQL Server Pregledna ploča za praćenje aktivnosti.

Postavljanje intervala osvježavanja ispod 10 sekundi povećava opterećenje vašeg servera prilikom praćenja. Za produkcijske sisteme pod velikim opterećenjem, razmislite o korištenju intervala od 30 sekundi ili dužih kako biste smanjili utjecaj.

3.2 Okno Procesi

Okno Procesi prikazuje informacije o trenutno pokrenutim sesijama na vašem SQL Server instanca. Ovaj panel je ključan za identifikaciju ko šta radi i uočavanje problema koji blokiraju.

Okno Procesi u SQL Server Monitor aktivnosti.

3.2.1 Razumijevanje informacija o procesu

Svaki red u oknu Procesi predstavlja aktivnu sesiju na serveru. Okno prikazuje sesije iz svih baza podataka i svih korisnika, dajući vam sveobuhvatan pregled aktivnosti servera.

Prikazane informacije uključuju korisničko ime, naziv aplikacije, naziv hosta, bazu podataka kojoj se pristupa i trenutnu naredbu. Ovo vam pomaže da povežete aktivnost baze podataka s određenim korisnicima ili aplikacijama.

3.2.2 Objašnjenje ključnih kolona

Razumijevanje ključnih kolona pomaže vam da efikasno interpretirate informacije o procesu:

  • ID sesije: Jedinstveni identifikator za svaku vezu. Sistemski procesi koriste negativne ID-ove sesije.
  • Korisnički proces: Označava da li se radi o korisničkoj sesiji (Da) ili sistemskom procesu (Ne).
  • Ulogovati se: The SQL Server prijava ili Windows račun povezan sa sesijom.
  • Baza podataka: Trenutni kontekst baze podataka za sesiju.
  • Stanje zadatka: Prikazuje šta se sesija trenutno radi (TRČI, OBUSTAVLJA SE, SPAVA, itd.).
  • Komanda: Vrsta komande koja se izvršava (SELECT, INSERT, UPDATE, itd.).
  • Primjena: Naziv aplikacije koja je kreirala vezu.
  • Vrijeme čekanja: 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 fokusirate na relevantne sesije:

  1. Kliknite na strelicu padajućeg menija u bilo kojem zaglavlju kolone.
  2. Filter prikazuje dostupne vrijednosti za tu kolonu, uključujući Sve, Praznine, I Neprazni.
  3. Odaberite određene vrijednosti da biste filtrirali prikaz samo na te sesije.

Filtriraj procese u SQL Server Monitor aktivnosti.

Na primjer, možete filtrirati Stanje zadatka da biste prikazali samo AKTIVNE sesije ili filtrirali baza podataka da biste vidjeli aktivnost u odnosu na određenu bazu podataka.

Također možete sortirati po bilo kojoj koloni klikom na njeno zaglavlje. Kliknite jednom za rastući redoslijed, dva puta za silazni redoslijed.

Sortiraj procese u SQL Server Monitor aktivnosti.

3.2.4 Identifikacija blokiranja i blokiranih sesija

Okno Procesi vam pomaže da identifikujete scenarije blokiranja u kojima jedna sesija sprečava druge da nastave:

  • Blokirao/la: Prikazuje ID sesije koja blokira ovu sesiju. Ako ova kolona 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. Ovo je osnovni uzrok lanca blokiranja.

Prikaži blokiranje i blokirane procese u SQL Server Monitor aktivnosti.

Da biste istražili problem blokiranja, prvo identificirajte blokator zaglavlja (sesiju označenu sa '1' u koloni Blokator zaglavlja), zatim provjerite šta radi i odlučite hoćete li mu dozvoliti da se dovrši ili ga prekinuti.

3.2.5 Akcije procesa (Uništi, Detalji, Praćenje)

Monitor aktivnosti vam omogućava da preduzimate radnje na pojedinačnim sesijama:

  1. Kliknite desnim tasterom miša na bilo koju sesiju u oknu Procesi.
  2. Vidjet ćete nekoliko opcija:
    • detalji: Prikazuje posljednju komandu izvršenu u ovoj sesiji.
    • Proces ubijanja: Završava sesiju (koristiti s oprezom).
    • Proces praćenja u SQL Server Profiler: lansiranja SQL Server Profiler i automatski filtrira kako bi prikazao samo aktivnosti iz ove sesije.

Izvršite radnje na procesima u SQL Server Monitor aktivnosti.

Opcija Detalji prikazuje tekst komande, ali imajte na umu da je ovo posljednji komanda izvršena—možda se još uvijek ne izvršava. Opcija praćenja je posebno korisna kada trebate vidjeti kompletan niz komandi koje sesija izvršava.

3.3 Okno čekanja resursa

Okno Čekanje resursa sumira statistiku čekanja, pokazujući koje vrste sesija resursa najčešće čekaju. Ove informacije su ključne za dijagnosticiranje uskih grla u performansama.

Okno čekanja resursa u SQL Server Monitor aktivnosti.

3.3.1 Razumijevanje statistike čekanja

Kada SQL Server Ako server ne može odmah odobriti zahtjev za resurs (kao što je zaključavanje, vrijeme procesora ili memorija), zadatak koji podnosi zahtjev ulazi u stanje čekanja. Statistika čekanja prati ove periode čekanja i pomaže vam da shvatite gdje server provodi vrijeme čekajući umjesto da radi.

Okno Čekanje resursa prikuplja podatke iz prikaza dinamičkog upravljanja sistemom kao što su sys.dm_os_wait_stats i sys.dm_exec_requests. U svakom intervalu osvježavanja izračunava razliku između trenutnog i prethodnog snimka, prikazujući vam stopu akumulacije za svaku vrstu čekanja.

3.3.2 Kategorije čekanja

Monitor aktivnosti grupira stotine pojedinačnih tipova čekanja u šire kategorije radi pojednostavljenja interpretacije:

  • CPU: Zadaci koji čekaju da CPU vrijeme postane dostupno.
  • Zasun međuspremnika: Čekanja na kratkoročne objekte sinhronizacije koji štite pristup stranicama podataka u memoriji. Ova kategorija uključuje čekanja na zaključavanje stranica (PAGELATCH_*).
  • Brava: Čekanja uzrokovana sesijama koje drže brave koje su potrebne drugim sesijama.
  • memorija: Čeka na memorijske grantove potrebne za operacije poput sortiranja i heširanja.
  • Mrežni ulaz/izlaz: Čeka slanje podataka klijentima ili primanje podataka od njih.
  • SQL CLR: Čekanja povezana s izvršavanjem Common Language Runtime-a.

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 tokom 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 vrijeme čekanja od 20,000 ms za kategoriju, to ukazuje na više istovremenih čekanja (20,000 ms / 10,000 ms = prosjek od 2 istovremena čekanja tokom intervala).

3.3.4 Identifikacija uskih grla u performansama

Koristite okno Čekanje resursa da biste utvrdili gdje vaš server provodi najviše vremena čekajući:

  1. Proširite okno Čekanje resursa.
  2. Obratite pažnju na kategorije čekanja koje akumuliraju najveća vremena čekanja.
  3. sortiraj po Kumulativno vrijeme čekanja da se vidi koji su resursi najograničeniji.

Sortirajte po kumulativnom vremenu čekanja u oknu Čekanje resursa da biste pronašli usko grlo performansi.

Čekanja na visok nivo zadržavanja bafera često ukazuju na sukob za stranice podataka u memoriji, što može ukazivati ​​na uska grla u ulazno/izlaznim sistemima ili sukob u tempdb-u. Čekanja na visok nivo zaključavanja ukazuju na probleme s blokiranjem. Čekanja na visok nivo memorije ukazuju na nedovoljne memorijske dodjele za operacije upita.

3.4 Okno za ulazno/izlazne operacije s datotekama podataka

Okno Data File I/O prikazuje aktivnost diska za svaku datoteku baze podataka na vašem serveru, što vam pomaže da identifikujete uska grla I/O i razumijete obrasce korištenja diska.

Okno za ulazno/izlazne podatke datoteka u SQL Server Monitor aktivnosti.

3.4.1 Razumijevanje I/O metrika

Okno U/I za datoteke podataka prikazuje nekoliko metrika za svaku datoteku baze podataka:

  • Baza podataka: Naziv baze podataka.
  • Tip datoteke: Ili Podaci (uključujući tabele i indekse) ili Zapisnik (zapisnik transakcija).
  • Logički naziv: Logički naziv datoteke kako je definiran u SQL Server.
  • MB/s Čitanje: Brzina čitanja podataka iz ove datoteke.
  • MB/sec Zapisano: Brzina podataka koji se upisuju u ovu datoteku.
  • Vrijeme odgovora (ms): Prosječno vrijeme odgovora za I/O operacije na ovoj datoteci.

Ove metrike se osvježavaju u istom intervalu kao i okno Pregled, pružajući vam uvid u aktivnost diska u stvarnom vremenu.

3.4.2 Identifikacija uskih grla u I/O sistemima

Obratite pažnju na ove obrasce koji ukazuju na probleme s performansama ulazno/izlaznih operacija:

  • Visoko vrijeme odziva: Vrijeme odziva konstantno iznad 15-20ms ukazuje na spore podsisteme diska. Vrijeme odziva iznad 50ms ukazuje na ozbiljna uska grla u ulazno/izlaznim operacijama.
  • Neuravnoteženo opterećenje: Ako jedna datoteka pokazuje znatno veće brzine ulazno/izlaznih operacija od drugih u istoj bazi podataka, možda biste imali koristi od dodavanja dodatnih datoteka kako biste rasporedili opterećenje.
  • Prekomjerna aktivnost Tempdb-a: Visoke brzine ulazno/izlaznih operacija na tempdb datotekama često ukazuju na upite koji kreiraju velike međuskupove rezultata ili koriste neefikasne planove izvršavanja.

3.4.3 Analiza datoteka baze podataka

Koristite okno Data File I/O da biste razumjeli kako vaše baze podataka koriste resurse diska:

  1. Proširite okno U/I za datoteke podataka.
  2. sortiraj po MB/s čitanje or MB/sec zapisano identificirati najaktivnije datoteke.
  3. Zabilježite sve datoteke sa konstantno visokom aktivnošću ili dugim vremenom odziva.
  4. Uporedite ove informacije s oknom Nedavni skupi upiti kako biste identificirali koji upiti uzrokuju opterećenje ulazno/izlaznih operacija.

Sortirajte po pročitanom ili zapisanom da biste identificirali najaktivnije datoteke u oknu za ulazno/izlazne podatke datoteka podataka.

3.5 Okno za nedavne skupe upite

Okno Nedavni skupi upiti često je najvrijednije okno za rješavanje problema s performansama aplikacije. Prikazuje upite koji troše značajne resurse servera, što vam pomaže da identificirate mogućnosti optimizacije.

Okno Nedavni skupi upiti u SQL Server Monitor aktivnosti.

3.5.1 Razumijevanje metrika upita

Monitor aktivnosti prikazuje nekoliko metrika za svaki skupi upit:

  • Izvršenja/min: Koliko puta je upit izvršen tokom posljednje minute.
  • CPU (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 keš bafera) u sekundi.
  • Logičkih čitanja/sek: Broj logičkih čitanja (iz keš memorije međuspremnika) u sekundi.
  • Prosječno trajanje (ms): Prosječno vrijeme izvršavanja za ovaj upit.
  • Broj plana: Broj planova izvršenja u keš memoriji 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 Opcije sortiranja

Okno Nedavni skupi upiti možete sortirati po različitim metrikama kako biste pronašli različite vrste problema:

  1. Kliknite na bilo koje zaglavlje kolone da biste sortirali po toj metrici.
  2. 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: Identifikujte upite koji se izvršavaju prečesto.
    • 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 kolona kako biste dobili različite perspektive. Upit s umjerenom upotrebom CPU-a, ali izuzetno visokim brojem izvršenja u minuti, mogao bi biti vaš pravi problem.

3.5.3 Pregled teksta upita

Da biste vidjeli stvarnu SQL naredbu koja stoji iza skupog upita:

  1. Kliknite desnim tasterom miša na red upita u oknu Nedavni skupi upiti.
  2. izabrati Uredi tekst upita.
    Uredite tekst upita u oknu Nedavni skupi upiti.
  3. Otvara se novi prozor upita koji prikazuje kompletnu SQL naredbu.
    Novi prozor za upit nakon odabira opcije "Uredi tekst upita" u oknu Nedavni skupi upiti.

Ovo vam omogućava da ispitate logiku upita i identifikujete potencijalne mogućnosti optimizacije. Zatim možete kopirati tekst upita za testiranje modificiranih verzija.

3.5.4 Analiza planova izvršenja

Planovi izvršenja vam pokazuju kako SQL Server izvršava upit, otkrivajući neefikasnosti poput nedostajućih indeksa ili neodgovarajućih tipova spajanja:

  1. Kliknite desnim tasterom miša na red upita u oknu Nedavni skupi upiti.
  2. izabrati Prikaži plan izvršenja.
    Prikaži plan izvršenja u oknu Nedavni skupi upiti.
  3. SQL Server Management Studio prikazuje grafički prikaz načina izvršavanja upita.
    Plan izvršenja upita u novom prozoru.

Tražite operacije koje troše veliki postotak troškova upita, upozorenja o nedostajućim statistikama ili indeksima i neočekivane operacije skeniranja tabela. To često ukazuje na to gdje bi se trebali usmjeriti napori optimizacije.

3.5.5 Identifikacija problematičnih upita

Obratite pažnju na ove obrasce u oknu Nedavni skupi upiti:

  • Prekomjerna pogubljenja: Upit koji se izvršava hiljadama 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 sa kratkim trajanjem: Mnogi brzi upiti koji ukupno troše mnogo CPU-a mogu uticati na performanse servera 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 neparametariziranih upita koji uzrokuju preopterećenje keš memorije plana.

4. Korištenje monitora aktivnosti za rješavanje problema s performansama

Monitor aktivnosti zaista blista kada ga sistematski 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 prekomjernog izvršavanja upita

Jedan od najčešćih problema s performansama su upiti koji se izvršavaju mnogo češće nego što je potrebno, često zbog problema u dizajnu aplikacije.

4.1.1 Identifikacija ponovljenih upita

Da biste uočili upite koji se prečesto izvršavaju:

  1. Otvorite Monitor aktivnosti i proširite Nedavni skupi upiti okno.
  2. sortiraj po Izvršenja/min (broj izvršenja u minuti).
  3. Potražite upite na vrhu s brojem izvršenja koji izgleda nerazumno visok.
  4. Kliknite desnim tasterom miša na sumnjivi upit i izaberite Uredi tekst upita da ispita SQL izraz.

Na primjer, ako vidite jednostavnu SELECT naredbu koja se izvršava 37,000 puta u minuti, zapitajte se da li aplikacija zaista treba pozivati ​​ovaj upit tako često. Većina upita koji se izvršavaju više od nekoliko hiljada puta u minuti zahtijeva istraživanje.

4.1.2 Analiza uzroka

Prekomjerno izvršavanje upita obično proizlazi iz ovih problema:

  • Problem upita N+1: Aplikacijski kod preuzima listu stavki, a zatim izvršava zaseban upit za svaku stavku kako bi dohvatio povezane podatke. Ovo kreira 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 kešira u memoriju aplikacije.
  • Petlje anketiranja: Kod više puta šalje upite bazi podataka provjeravajući promjene stanja umjesto korištenja obavještenja o promjenama ili redova poruka.
  • Neefikasnost ORM-a: Entity Framework i slični alati ponekad generiraju neefikasne obrasce upita kada programeri ne razumiju kako se njihov kod prevodi u SQL.

Da biste utvrdili uzrok, pratite upit unatrag do koda aplikacije. Obratite pažnju na aplikacija i Login kolone u oknu Procesi kada se upit izvrši. Također možete kliknuti desnim tasterom miša na proces i odabrati Proces praćenja u SQL Server Profiler da vidite obrazac poziva.

4.1.3 Rješenja i najbolje prakse

Nakon što ste identificirali prekomjeran broj izvršavanja upita, razmotrite ova rješenja:

  • Batch obrada: Izmijenite kod aplikacije kako biste dohvatili više stavki u jednom upitu koristeći spajanja ili IN klauzule umjesto izvršavanja odvojenih upita u petlji.
  • Keširanje rezultata: Često pristupanje kešu, rijetko mijenjanje podataka u memoriji aplikacije s odgovarajućim vremenima isteka.
  • Nestrpljivo učitavanje: Konfigurišite ORM-ove da koriste strategije brzog učitavanja koje dohvaćaju povezane podatke u manjem broju efikasnijih upita.
  • Parametrizacija upita: Osigurajte da upiti koriste parametre umjesto spajanja vrijednosti, što poboljšava ponovnu upotrebu keša plana i smanjuje opterećenje kompajliranja.

4.2 Istraživanje problema blokiranja

Do blokiranja dolazi kada jedna sesija ima blokade koje sprečavaju nastavak drugih sesija. To se manifestuje kao sporo vrijeme odziva aplikacije i frustrirani korisnici.

4.2.1 Identifikacija lanaca blokiranja

Za otkrivanje i analizu blokiranja:

  1. Otvorite Monitor aktivnosti i proširite procesi okno.
  2. Tražite sesije s vrijednostima u Blokirao/la kolona — one čekaju brave koje drže druge sesije.
  3. Pronađi sesije sa '1' u Blokada glave kolona - to su osnovni uzrok blokiranja lanaca.
  4. Imajte na umu ID sesije blokatora glave.
  5. Desnim klikom miša kliknite sesiju blokatora glave i odaberite detalji da vidi koju komandu 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 tipova brava

The Vrsta čekanja Kolona u oknu Procesi označava koju vrstu zaključavanja blokirane sesije čekaju:

  • LCK_M_X: Čekanje ekskluzivnog zaključavanja, obično uzrokovano operacijama ažuriranja, brisanja ili umetanja.
  • LCK_M_S: Čekanje dijeljenog zaključavanja, obično SELECT naredbe čekaju da se ekskluzivna zaključavanja otpuste.
  • LCK_M_U: Čekanje zaključavanja ažuriranja, međutip zaključavanja koji se koristi tokom ažuriranja.
  • LCK_M_IX: Čekanje isključivog zaključavanja namjere, što ukazuje na sukob zaključavanja na nivou stranice ili reda.

The Resurs čekanja Kolona prikazuje koji se objekt baze podataka zaključava, što vam pomaže da shvatite koja je tabela ili indeks uključen u sukob.

4.2.3 Rješavanje problema blokiranja

Nakon što ste identificirali blokirajuću sesiju i šta ona radi, imate nekoliko opcija:

  1. Sačekajte završetak: Ako bloker zaglavlja izvršava legitimni upit koji će uskoro biti završen, možda je najbolje pustiti ga da se završi prirodno.
  2. Zaustavi sesiju: Ako je blokator zaglavlja zaglavljen ili izvršava upit koji treba otkazati:
    • Desnim klikom miša kliknite sesiju u oknu Procesi.
    • izabrati Proces ubijanja.
    • Potvrdite radnju u dijaloškom okviru.
  3. Optimizirajte upite: Ako se blokiranje ponavlja s istim upitima, optimizirajte ih kako biste smanjili trajanje zaključavanja.
  4. Podesite nivoe izolacije: Razmislite o korištenju READ COMMITTED SNAPSHOT IZOLATION kako biste smanjili blokiranje kod radnih opterećenja s velikim brojem čitanja.
  5. Podešavanje indeksa: Dodajte indekse kako biste ubrzali upite, smanjujući vrijeme koje drže zaključane.

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 Identifikacija upita koji intenzivno koriste CPU

Da biste pronašli upite koji previše troše CPU:

  1. Otvorite Nedavni skupi upiti okno.
  2. sortiraj po CPU (ms/s) za prikaz upita koji koriste najviše CPU vremena.
  3. Pregledajte najčešće upite na listi.
  4. Desnim klikom miša na upite s visokim CPU-om odaberite Uredi tekst upita da biste pogledali SQL izraz.
  5. izabrati Prikaži plan izvršenja da 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 kolona. Upit koji koristi umjerenu CPU po izvršavanju, ali se izvršava hiljadama 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 mnogo manje CPU-a nego skeniranje tabela. Potražite preporuke za nedostajuće indekse u planovima izvršenja.
  • Prepisivanje neefikasnih upita: Zamijenite kursore operacijama zasnovanim na skupovima, eliminišite nepotrebne funkcije u WHERE klauzulama i uklonite redundantne spojeve.
  • Ažuriranje statistike: Zastarjela statistika uzrokuje SQL Server odabrati neefikasne planove izvršenja. Pokrenite naredbu UPDATE STATISTICS na pogođenim tabelama.
  • 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 vam pomaže da identifikujete operacije koje intenzivno koriste memoriju.

4.4.1 Razumijevanje metrika memorije

The Korištenje memorije Kolona u oknu Procesi prikazuje memoriju dodijeljenu svakoj sesiji u kilobajtima. Visoka upotreba memorije od strane jedne sesije često ukazuje na:

  • Velike operacije sortiranja ili heširanja koje nisu mogle stati u prvobitno dodijeljenu memoriju
  • Upiti koji preuzimaju ogromne skupove rezultata
  • Prekomjerni paralelizam koji 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 Identifikacija upita koji intenzivno koriste memoriju

Da biste pronašli upite koji uzrokuju pritisak na memoriju:

  1. U procesi okno, sortiraj po Korištenje memorije da biste vidjeli sesije koje troše najviše memorije.
  2. Desnim klikom miša kliknite sesije s velikom potrošnjom memorije i odaberite detalji da pregledaju njihove upite.
  3. 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.
  4. Ispitajte planove izvršavanja za operatore sortiranja i heširanja, koji koriste memorijske grantove.

Upiti koji prikazuju upozorenja o "Dodjeli memorije" u planovima izvršavanja ili upozorenjima o prelivanju 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 da utvrdite da li je baza podataka usko grlo.

4.5.1 Povezivanje monitora aktivnosti s problemima aplikacije

Da biste istražili sporost aplikacije:

  1. Zabilježite tačno vrijeme kada korisnici prijavljuju probleme i koje su aplikacije pogođene.
  2. Otvorite Monitor aktivnosti i provjerite pregled okno za skokove resursa u tom trenutku.
  3. U procesi panel, filtriraj po aplikacija da bi se prikazale samo veze iz pogođene aplikacije.
  4. Tražite visoko Vrijeme čekanja vrijednosti, koje ukazuju na kašnjenja baze podataka.
  5. Provjerite 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 primjećuju usporavanje, problem vjerovatno leži u kodu aplikacije, latenciji mreže ili performansama na strani klijenta.

4.5.2 Identifikacija neefikasnih obrazaca aplikacija

Monitor aktivnosti otkriva nekoliko anti-šablona u dizajnu aplikacija:

  • Pričajuće aplikacije: Mnogo malih upita umjesto manjeg broja, efikasnijih upita. Identifikuje se po velikom broju konekcija 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šenja u minuti.
  • Veliki skupovi rezultata: Aplikacije preuzimaju mnogo više podataka nego što je potrebno. Potražite visoko 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: Dobijanje podataka monitora aktivnosti putem T-SQL-a

Iako Monitor aktivnosti pruža praktičan grafički interfejs, ponekad je potrebno programski preuzeti ekvivalentne informacije ili kreirati 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 nivou sesije kao što su korisničko ime, ime hosta i ime 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 keširane upite.
  • sys.dm_io_virtual_file_stats: Vraća I/O statistiku za podatke i datoteke dnevnika.
  • sys.dm_exec_sql_text: Dohvaća SQL tekst za dati 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

Da biste replicirali funkcionalnost 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

Da biste vidjeli statistiku čekanja sličnu 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 kreirala zajednica i koja pruža detaljnije informacije od Monitora aktivnosti u jednom skupu rezultata.

5.2.1 Instaliranje sp_WhoIsActive

Da biste instalirali sp_WhoIsActive:

  1. Preuzmite najnoviju verziju sa http://whoisactive.com.
  2. Preuzimanje je SQL skripta koja sadrži definiciju procedure.
  3. Otvorite skriptu u SQL Server ManagementStudio.
  4. Povežite se sa svojim SQL Server primer.
  5. Izvršite skriptu za kreiranje procedure u glavnoj bazi podataka.
  6. 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 funkcije sp_WhoIsActive je:

EXEC sp_WhoIsActive;

Ovo vraća skup rezultata koji prikazuje sve aktivne sesije sa njihovim upitima, vrstama čekanja, informacijama o blokiranju i korištenju resursa.

Za uzorak od 10 sekundi koji prikazuje aktivnost tokom tog perioda:

EXEC sp_WhoIsActive @delta_interval = 10;

Ovo izračunava delte za metrike poput CPU-a i čitanja, pokazujući šta se dogodilo tokom tih 10 sekundi.

5.2.3 Napredni parametri

sp_WhoIsActive podržava brojne parametre za prilagođavanje:

  • @filter: Filtrirajte rezultate prema određenim sesijama, bazama podataka ili prijavama.
  • @tip_filtera: Navedite na šta se filter primjenjuje (sesija, baza podataka, prijava itd.).
  • @get_plans: Uključite planove izvršenja u rezultate (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: Sortirajte rezultate po različitim metrikama (CPU, očitavanja, trajanje itd.).
  • @destination_table: Unesite rezultate u tabelu za praćenje historije.

Primjer koji prikazuje planove sortirane po CPU-u:

EXEC sp_WhoIsActive 
    @get_plans = 1,
    @sort_order = '[CPU] DESC';

5.3 Korištenje sistemskih pohranjenih procedura

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;

Obje procedure 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. Najkorisnije su za brze provjere kada vam je potrebno minimalno informacija.

5.3.2 Ostali korisni sistemski postupci

Dodatne sistemske procedure 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 Kreiranje prilagođenih skripti za praćenje

Za okruženja koja zahtijevaju specifično praćenje izvan onoga što pruža Activity Monitor, možete kreirati prilagođena rješenja pomoću DMV-ova.

5.4.1 Kompletan skript ekvivalentan monitoru 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:

  1. Kreirajte tabelu za pohranjivanje rezultata praćenja.
  2. Izmijenite svoj skript za praćenje kako biste ubacili rezultate u ovu tabelu.
  3. In SQL Server Management Studio, proširi SQL Server agent u Istraživaču objekata.
  4. Desni klik Posao i izaberite Novi posao.
  5. Konfigurišite zadatak da izvršava vašu skriptu za praćenje u redovnim intervalima.
  6. Postavite upozorenja ili izvještaje na osnovu prikupljenih podataka.

Ovaj pristup omogućava historijsko praćenje i analizu trendova koje Activity Monitor ne pruža.

6. Ograničenja i razmatranja za Monitor aktivnosti

Iako je Monitor aktivnosti vrijedan, razumijevanje njegovih ograničenja pomaže vam da ga koristite na odgovarajući način i dopunite ga drugim alatima kada je to potrebno.

6.1 Razumijevanje opterećenja monitora aktivnosti

Monitor aktivnosti nije besplatan – troši resurse servera za prikupljanje i prikaz informacija. Razumijevanje ovog opterećenja pomaže vam da ga koristite odgovorno.

6.1.1 Uticaj na serverske resurse

Monitor aktivnosti pokreće upite prema sistemskim DMV-ovima svaki put kada se osvježava. Ovi upiti troše CPU, generiraju logička čitanja i mogu nakratko zaključati sistemske tabele. Na prometnim serverima, 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 keširane tabele. Na serverima sa hiljadama keširanih 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 servera, posebno na već učitanim sistemima.

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 serverima. Ne ostavljajte Activity Monitor uključen u ovim 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 tokom dužih perioda.
  • 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 kontinuirano, posebno ne više instanci od različitih korisnika.

6.2 Problemi grupiranja 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 grupiše čekanja

SQL Server Prati stotine različitih tipova čekanja, od kojih svaki ukazuje na određeni resurs ili stanje. Monitor aktivnosti ih grupira u široke kategorije kao što su „Zaključavanje bafera“, „Zaključavanje“ i „Memorija“.

Na primjer, kategorija "Buffer Latch" uključuje PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX i nekoliko drugih specifičnih tipova čekanja. Iako su svi povezani s pristupom stranici, imaju različite uzroke i rješenja.

Microsoft ne dokumentira tačno koje vrste čekanja spadaju u koje kategorije, što otežava razumijevanje onoga što zaista vidite.

6.2.2 Nedostajući tipovi čekanja

Monitor aktivnosti ne prikazuje sve tipove čekanja. Najznačajnije je to što često izostavlja CXPACKET čekanja, koja ukazuju na paralelno izvršavanje upita. CXPACKET čekanja su uobičajena i obično nisu problematična, ali poznavanje njihovog prisustva 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, razlika proizlazi iz logike filtriranja i grupiranja u Activity Monitoru.

6.2.3 Zašto su određene vrste čekanja važne

Poznavanje specifične vrste čekanja je važno za rješavanje problema:

  • PAGELATCH_EX: Često ukazuje na sukob tempdb podataka na stranicama za alokaciju. Rješenje uključuje dodavanje više tempdb datoteka s podacima.
  • PAGELATCH_SH: Može ukazivati ​​na vruće stranice u korisničkim tabelama. Rješenje uključuje particioniranje ili reorganizaciju indeksa.
  • PAGELATCH_UP: Uobičajeno tokom ažuriranja. Može ukazivati ​​na normalan rad, a ne na problem.

Monitor aktivnosti grupiše sve ovo pod "Buffer Latch", što otežava dijagnozu. Alati poput sp_WhoIsActive i DMV upita prikazuju specifične tipove čekanja.

6.3 Tač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 Snimak stanja u odnosu na kontinuirano praćenje

Monitor aktivnosti prikazuje snimke u određenom trenutku napravljene u svakom intervalu osvježavanja. Događaji koji se dešavaju 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 nikako, ovisno o vremenu.

To znači da se Activity Monitor ističe u pronalaženju trajnih problema (blokiranje koje traje nekoliko minuta, konstantno visoko opterećenje CPU-a), ali može propustiti prolazne probleme (kratke blokade, povremene skokove u upitima).

6.3.2 Agregacija i uzorkovanje

Okno Nedavni skupi upiti prikazuje podatke agregirane od ulaska planova upita u keš memoriju. Dva identična upita s različitim vrijednostima parametara pojavljuju se kao jedan red ako dijele plan. Ova agregacija može prikriti probleme sa specifičnim kombinacijama parametara (problemi sa njuškanjem parametara).

Okno Čekanje resursa izračunava stope poređenjem snimaka. Ako se statistika čekanja resetuje između snimaka (rijetko, ali moguće), izračunate stope mogu biti netačne.

6.4 Kada NE koristiti Monitor aktivnosti

Monitor aktivnosti nije prikladan za svaki scenario praćenja. Prepoznajte kada su alternativni alati bolji izbor.

6.4.1 Zahtjevi za historijsku analizu

Monitor aktivnosti prikazuje samo trenutnu ili nedavnu aktivnost. Ne pohranjuje historijske podatke. Ako trebate analizirati trendove tokom dana ili sedmica, uporediti trenutne performanse s osnovnim vrijednostima ili generirati izvještaje o obrascima performansi, Monitor aktivnosti nije dovoljan.

Za historijsku analizu koristite SQL Serverugrađena kontrolna 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 tipu čekanja za napredno podešavanje, grupiranje i filtriranje u Monitoru aktivnosti to čini neadekvatnim. Umjesto toga koristite direktno DMV upite ili sp_WhoIsActive.

Za sveobuhvatnu analizu statistike čekanja, direktno upitajte sys.dm_os_wait_stats i ručno filtrirajte benigna čekanja.

6.4.3 Razmatranja o produkcijskom serveru

Na produkcijskim serverima pod velikim opterećenjem, opterećenje Activity Monitora može biti problematično. Više administratora baza podataka ne bi trebalo istovremeno pokretati Activity Monitor na istom serveru.

Za praćenje produkcije, razmotrite jednostavne alternative poput planiranih snimaka DMV-a pohranjenih u bazi podataka za praćenje ili koristite usmjeravanje samo za čitanje za praćenje sekundarnih replika u konfiguracijama Always On.

7. Najbolje prakse za korištenje Monitora aktivnosti

Praćenje najboljih praksi osigurava da dobijete maksimalnu vrijednost od Activity Monitora, a istovremeno minimizirate negativne utjecaje na vaše servere.

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 je idealan kada korisnici trenutno imaju problema i trebate odmah dijagnosticirati problem. Prikaz u stvarnom vremenu vam pomaže da vidite šta se trenutno dešava.

Kada dobijete poruku da je „aplikacija spora“, otvaranje Activity Monitora trebao bi biti jedan od prvih koraka. Možete brzo utvrditi da li je baza podataka zauzeta, blokirana ili neaktivna.

7.1.2 Istraga usporavanja aplikacije

Kada određena aplikacija prestane reagirati, Monitor aktivnosti vam pomaže da utvrdite da li su uzrok problemi s bazom podataka. Filtrirajte okno Procesi prema nazivu aplikacije da biste vidjeli samo aktivnost baze podataka te aplikacije.

Ako aplikacija ne pokazuje nikakvu aktivnost baze podataka dok korisnici prijavljuju probleme, problem se nalazi negdje drugdje. Ako vidite opsežno blokiranje ili skupe upite, pronašli ste krivca.

7.1.3 Brze provjere stanja

Monitor aktivnosti pruža odličnu kontrolnu ploču za brze provjere ispravnosti tokom rutinske administracije. Otvorite je, pogledajte grafikone Pregleda i provjerite da li sve izgleda neuobičajeno.

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 Activity Monitora 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 dobar odziv uz razumne troškove.
  • Prošireno praćenje: 30-60 sekundi smanjuje utjecaj na server tokom dužih perioda posmatranja.
  • Dijagnoza kritičnog problema: 5 sekundi daje visoku granularnost kada je svaka sekunda važna, ali koristite kratko.
  • Redovne zdravstvene provjere: Ručno osvježavanje (interval od 1 sata) kada ne gledate aktivno.

Ne zaboravite zatvoriti Monitor aktivnosti kada završite. Postavljanje dugog intervala i zaboravljanje na njega troši resurse servera.

7.2.2 Strategije filtriranja

Koristite filtere da biste se fokusirali na relevantne informacije i smanjili kognitivno opterećenje:

  • Filtriraj procese po baza podataka da biste vidjeli samo aktivnosti na određenim bazama podataka.
  • Filtriraj po Login za praćenje aktivnosti određenog korisnika.
  • Filtriraj po Stanje zadatka = RUNNING radi skrivanja neaktivnih sesija.
  • Filtriraj po aplikacija da izoluje saobraćaj od određenih programa.
  • Prikaži samo neprazne dijelove u Blokirao/la da vidite samo blokirajuće situacije.

7.2.3 Odabir i sortiranje kolona

Razviti sistematičan pristup pregledu podataka Monitora aktivnosti:

  1. Započnite s pregledom: Provjerite grafikone za očigledne skokove ili anomalije.
  2. Provjerite procese za blokiranje: Sortirajte po ID-u sesije, a zatim potražite vrijednosti za Blokirao/la.
  3. Pregled resursa čekanja: Sortiraj po kumulativnom vremenu čekanja kako bi se identificirala uska grla resursa.
  4. Analizirajte skupe upite: Sortirajte po različitim metrikama (CPU, izvršavanja, čitanja) da biste pronašli različite vrste problema.
  5. Provjerite s I/O oknom: Potvrdite da li su upiti intenzivni u ulazno/izlaznim operacijama povezani 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 sa SQL Server Profiler

Monitor aktivnosti i SQL Server Profiler se dobro nadopunjuje. Kada u Activity Monitoru pronađete problematičnu sesiju, kliknite desnim tasterom miša na nju i odaberite Proces praćenja u SQL Server Profiler.

Ovo pokreće Profiler s filterima koji su već konfigurirani za hvatanje samo aktivnosti te sesije. Vidite kompletan niz izvršenih naredbi, informacije o vremenu i poruke o greškama - detalje koje Monitor aktivnosti ne pruža.

Da biste saznali više o tome SQL Server Mogućnosti profilera i napredne tehnike praćenja, pogledajte naše sveobuhvatan SQL Server Vodič za profilere.

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. Kreirajte sesije proširenih događaja za praćenje određenih događaja poput zastoja, dugotrajnih upita ili prekomjernog broja rekompilacija.

Koristite Monitor aktivnosti za trenutnu istragu i Proširene događaje za kontinuirano praćenje i analizu historije. Ova dva alata zadovoljavaju različite potrebe.

Da biste saznali više o tome SQL Server Proširene mogućnosti događaja i napredne tehnike praćenja, pogledajte naše sveobuhvatan 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 funkcije koje nedostaju Activity Monitoru: upozoravanje, praćenje historijskih trendova, planiranje kapaciteta i automatiziranu dijagnostiku.

Ovi alati su vrijedni dodaci Activity Monitoru, a ne zamjena. Activity Monitor ostaje koristan za brze provjere i istrage čak i kada su dostupni sofisticirani alati za praćenje.

7.4 uobičajenih grešaka koje treba izbjegavati

Razumijevanje uobičajenih grešaka u aplikaciji Activity Monitor pomaže vam da je efikasnije koristite.

7.4.1 Ostavljanje Monitora aktivnosti u neprekidnom radu

Najčešća greška je otvaranje Activity Monitora i ostavljanje da radi neograničeno. Ovo troši resurse servera i pruža malo vrijednosti jer ne pratite aktivno.

Zatvorite Monitor aktivnosti kada ga aktivno ne koristite. Ako vam je potrebno kontinuirano praćenje, umjesto toga implementirajte odgovarajuće rješenje za praćenje sa zakazanim prikupljanjem podataka.

7.4.2 Pretjerano oslanjanje samo na Monitor aktivnosti

Monitor aktivnosti pruža jednu perspektivu o zdravlju servera. Nemojte se oslanjati isključivo na njega. Dopunite ga Windows Performance Monitorom za metrike na nivou operativnog sistema, Extended Events za detaljno praćenje i analizom plana izvršenja za podešavanje upita.

Monitor aktivnosti vam pomaže u identificiranju problema, ali njihovo rješavanje često zahtijeva dodatne alate i dublju analizu.

Saznajte više o SQL Server monitor performansi u našem kompletan vodič.

7.4.3 Ignorisanje historijskih trendova

Monitor aktivnosti prikazuje trenutno stanje, ali problemi s performansama često imaju obrasce vidljive tek tokom vremena. Implementirajte prikupljanje historijskih podataka kako biste mogli uporediti trenutne metrike s osnovnim vrijednostima i identificirati trendove.

Bez historijskog 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 postepeno opadanje.

8. Rješavanje problema s praćenjem aktivnosti

Sam Monitor aktivnosti ponekad ima problema. Poznavanje načina rješavanja ovih 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 faktora može biti uzrok.

8.1.1 Problemi s dozvolama

Najčešći uzrok problema s Monitorom aktivnosti su nedovoljne dozvole. Da biste provjerili i riješili problem:

  1. Provjerite dozvole na nivou servera:
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. Ako se ne vrate redovi, nemate dozvolu VIEW SERVER STATE.
  3. Zamolite administratora servera da vam to odobri:
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. Zatvorite i ponovo otvorite Monitor aktivnosti nakon što su dozvole odobrene.

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 Monitoru aktivnosti. Alat možda neće razumjeti nove tipove čekanja ili kolone sistemskog prikaza.

Uvijek koristite SSMS verziju koja se podudara s vašom ili je novija od nje. SQL Server verzija. Microsoft nudi najnoviji SSMS kao besplatno preuzimanje odvojeno od SQL Server sama.

8.1.3 Problemi sa zaštitnim zidom i mrežom

Monitor aktivnosti zahtijeva povezivanje sa SQL Server instancu na standardnim portovima (1433 prema zadanim postavkama). Ako se možete povezati putem Object Explorera, ali Monitor aktivnosti ne uspijeva, pravila zaštitnog zida (firewalla) možda blokiraju određene veze.

Provjerite da li vaš klijent može doći do SQL Server Provjerite sve potrebne portove na računaru. Provjerite i Windows zaštitni zid i sve mrežne zaštitne zidove između klijenta i servera.

8.2 Praćenje aktivnosti trajno pauzirano

Uobičajen problem, posebno u SQL Server 2019, da li se Monitor aktivnosti otvara u pauziranom stanju i odbija da nastavi rad.

8.2.1 Razumijevanje pauziranog stanja

Kada se Monitor aktivnosti pauzira, svi paneli prikazuju status „Pauzirano“ s dugmetom za nastavak koje možda neće funkcionisati. Ovo vam onemogućava da vidite bilo kakvu aktivnost servera.

Pauzirano stanje obično se javlja zbog problema s dozvolama, 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 dozvola VIEW SERVER STATE na novijim panelima dodanim u posljednje vrijeme SQL Server verzije
  • Udaljene veze onemogućene na SQL Server primer
  • 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 servera

8.2.3 Koraci rješavanja

Da biste riješili probleme sa pauziranim stanjem Monitora aktivnosti:

  1. Ažuriranje SSMS-a: Preuzmite i instalirajte najnovije SQL Server Verzija Management Studija sa Microsoftove web stranice. Mnoge greške pauziranog stanja su ispravljene u kasnijim izdanjima.
  2. Potvrdite dozvole: Provjerite da li imate dozvole VIEW SERVER STATE i VIEW ANY DEFINITION.
  3. Provjerite udaljene veze: Provjerite je li SQL Server instanca omogućava udaljene veze:
    EXEC sp_configure 'remote access';
    

    Ako je vrijednost 0, zamolite administratora da je omogući.

  4. Ponovo pokrenite SSMS: Ponekad jednostavno zatvorite sve prozore i ponovo pokrenite SQL Server Management Studio rješava problem.
  5. Povežite se s Windows autentifikacijom: Ako koristite SQL autentifikaciju, umjesto toga pokušajte s Windows autentifikacijom, jer ona 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 servera, potrebno je podešavanje.

8.3.1 Smanjenje troškova praćenja

Da biste smanjili utjecaj Monitora aktivnosti:

  1. Povećajte interval osvježavanja na 30 sekundi ili 1 minutu.
  2. Zatvorite okna koja ne koristite aktivno klikom na dugme za sažimanje.
  3. Kada su okna sažeta, Monitor aktivnosti ne traži podatke za njih.
  4. Izbjegavajte istovremeno pokretanje više instanci Activity Monitora.
  5. Potpuno zatvorite Monitor aktivnosti kada aktivno ne istražujete probleme.

8.3.2 Alternativne metode praćenja laganih objekata

Ako je Monitor aktivnosti previše zahtjevan za resurse u vašem okruženju, razmotrite alternative:

  • Direktno upitajte DMV-ove: Napišite specifične T-SQL upite koji dohvaćaju samo informacije koje su vam potrebne.
  • Koristite sp_WhoIsActive: Ova pohranjena procedura je visoko optimizirana i obično ima niže opterećenje od Activity Monitora.
  • Implementirajte uzorkovanje: Planirajte poslove SQL agenta koji redovno bilježe snimke DMV podataka, pohranjujući rezultate u tabele za kasniju analizu.
  • Nadgledanje sekundarnih replika: In Grupe dostupnosti Always On, pokrenite Monitor aktivnosti na čitljivoj sekundarnoj serverskoj platformi umjesto na primarnoj.

8.4 Netačne ili nedostajuće informacije

Ponekad Monitor aktivnosti prikazuje informacije koje izgledaju netačno ili nepotpuno.

8.4.1 Provjera podataka s DMV-ima

Kada rezultati Monitora aktivnosti izgledaju sumnjivo, provjerite ih direktnim upitom u osnovne DMV-ove. Na primjer, ako okno Procesi ne prikazuje blokiranje, ali ga korisnici 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 je pokrenut između intervala osvježavanja neće se pojaviti u Nedavnim skupim upitima osim ako njegov plan izvršavanja ne ostane u kešu.

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 se pojavljuje 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 nekoj kategoriji, koristite okno Procesi da biste identifikovali koje sesije imaju ta čekanja:

  1. Obratite pažnju na kategoriju čekanja s visokim kumulativnim vremenom čekanja (npr. „Zaključavanje“).
  2. Prebacite se na okno Procesi.
  3. sortiraj po Vrsta čekanja grupirati sesije prema trenutnom čekanju.
  4. Potražite sesije koje prikazuju tipove čekanja u problematičnoj kategoriji.
  5. Za te sesije, ispitajte Resurs čekanja kolonu da biste vidjeli koji su objekti baze podataka uključeni.
  6. Kliknite desnim tasterom miša i izaberite detalji da biste vidjeli tekst upita.

Ova korelacija vam pomaže da pređete sa "imamo čekanja na zaključavanje" na "ovaj specifični upit čeka na zaključavanje na ovoj tabeli".

9.1.2 Povezivanje skupih upita sa problemima ulazno/izlaznih operacija

Kada okno Data File I/O prikazuje visoku aktivnost diska na određenoj bazi podataka:

  1. Obratite pažnju na to koje datoteke baze podataka imaju visoke brzine čitanja ili pisanja od MB/s.
  2. Prebaci se na Nedavne skupe upite.
  3. sortiraj po Fizičkih čitanja/sek za identifikaciju upita koji intenzivno čitaju s diska.
  4. Filtrirajte ili vizualno identificirajte upite koji se izvršavaju u bazi podataka s visokim ulazno/izlaznim operacijama.
  5. Pregledajte planove izvršavanja tih upita za skeniranje tabela ili nedostajuće indekse koji uzrokuju prekomjeran ulazno/izlazni promet.

Ova višekanalna analiza povezuje simptome (visok obim ulazno/izlaznih operacija na disku) sa uzrocima (specifični neefikasni upiti).

9.2 Korištenje monitora aktivnosti za planiranje kapaciteta

Iako Monitor aktivnosti ne pohranjuje historijske podatke, možete ga strateški koristiti za opažanja planiranja kapaciteta.

9.2.1 Identifikacija obrazaca vršne upotrebe

Pratite aktivnost servera u različito doba dana kako biste identifikovali obrasce korištenja:

  1. Otvorite Monitor aktivnosti tokom poznatih vršnih radnih sati.
  2. Obratite pažnju na vršne vrijednosti grafikona % vremena procesora.
  3. Zabilježite maksimalni broj zadataka na čekanju.
  4. Pratite broj zahtjeva za serijom/sek u vrijeme najveće potražnje.
  5. Dokumentujte najprometnije baze podataka u oknu Procesi.
  6. Ponovite tokom vansezonskih sati radi poređenja.

Ako vrijeme procesora u vršnim satima konstantno 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 tokom vremena:

  • Pravite snimke ekrana okna Pregled u isto vrijeme svaki dan
  • Zabilježite vršne vrijednosti sa svakog grafikona
  • Uporedite sedmicu za sedmicom kako biste identifikovali trendove rasta
  • Pratite postepeno povećanje prosječnog vremena procesora ili brzine ulazno/izlaznih operacija.

Ovo ručno praćenje trendova dopunjuje sofisticiranija rješenja za praćenje i pomaže u opravdanju proširenja kapaciteta.

9.3 Dokumentovanje osnovnih rezultata

Utvrđivanje osnovnih metrika performansi pomaže vam da prepoznate kada performanse opadaju.

9.3.1 Prikupljanje osnovnih metrika

Tokom perioda poznatih dobrih performansi, dokumentirajte metrike Monitora aktivnosti:

  1. Otvorite Monitor aktivnosti tokom normalnih poslovnih operacija (ne u vršnim ili vanvršnim satima).
  2. Vrijednosti okna Pregled zapisa:
    • Tipični raspon vremena procesora u %
    • Prosječan broj zadataka čekanja
    • Normalna brzina ulazno/izlaznih operacija baze podataka
    • Tipični zahtjevi za seriju/sek
  3. Napomena o kategorijama okna Čekanje resursa koje prikazuju najveće vrijeme čekanja.
  4. Dokumentujte broj aktivnih procesa obično u oknu Procesi.
  5. Zabilježite reprezentativne metrike izvršenja upita iz Nedavnih skupih upita.

Sačuvajte ovu osnovnu dokumentaciju za buduću upotrebu prilikom istraživanja problema s performansama.

9.3.2 Poređenje trenutnih i osnovnih performansi

Kada se pojave problemi s performansama, uporedite trenutna očitanja Monitora aktivnosti s vašim dokumentiranim osnovnim vrijednostima:

  • Da li je vrijeme procesora značajno veće od osnovnog? Fokusirajte se na upite koji intenzivno koriste CPU.
  • Jesu li zadaci čekanja 2-3 puta veći od osnovnih nivoa? Istražite čekanja resursa.
  • Da li je I/O znatno veći? Provjerite okno Data File I/O i skupe upite.
  • Jesu li zahtjevi za serijskim aktivnostima manji od osnovnih tokom vršnih sati? Potražite probleme s blokiranjem ili povezivanjem.

Ovo poređenje vam pomaže da identifikujete šta se promijenilo i da na odgovarajući način usmjerite napore za rješavanje problema.

9.4 Kreiranje prilagođenih tokova rada za praćenje

Razviti sistematske tokove rada za uobičajene scenarije istrage kako bi se osigurala temeljita i ponovljiva analiza.

9.4.1 Postupak istrage korak po korak

Kada korisnici prijave probleme s performansama, slijedite dosljedan tijek rada:

  1. Brza provjera zdravlja: Otvorite Monitor aktivnosti i skenirajte grafikone u oknu Pregled za očigledne anomalije.
  2. Provjerite blokiranje: Proširite okno Procesi, filtrirajte za Neprazne stavke u koloni Blokirano od.
  3. Identifikujte sukob resursa: Okno "Pregled čekanja resursa" sortirano po vremenu čekanja.
  4. Pronađite skupe upite: Ispitajte nedavne skupe upite sortirane po CPU-u, zatim izvršenjima, a zatim čitanjima.
  5. Korelacija I/O obrazaca: Unakrsno referencirajte skupe upite s aktivnošću okna za ulazno/izlazne operacije s datotekama podataka.
  6. Nalazi dokumenta: Napravite snimke ekrana i zabilježite relevantne ID-ove sesija, tipove čekanja i detalje upita.
  7. Duboko ronjenje: Koristite tragove Profilera, analizu plana izvršenja i DMV upite za detaljnu istragu identifikovanih problema.

9.4.2 Kriteriji eskalacije

Utvrdite kriterije za to kada eskalirati probleme, a kada nastaviti istragu:

  • Odmah eskalirajte: Lanci blokiranja traju >5 minuta, vrijeme procesora na 100% duže od 2 minute, kritični sistemski procesi pokazuju stanje SUSPENDED.
  • Eskalacija s analizom: Ponavljajući skupi upiti koji troše >50% CPU-a, konstantno visoka vremena odziva I/O >50ms, višestruki neuspjesi dodjeljivanja memorije.
  • Istražite dalje: Privremena čekanja koja se rješavaju u roku od nekoliko minuta, upiti sa neoptimalnim planovima, ali prihvatljivim performansama, manje blokiranje u trajanju <30 sekundi.

10. Monitor aktivnosti u različitim SQL Server verzije

Monitor aktivnosti se razvio širom 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 verzije

SQL Server 2008. godine predstavljen je moderni dizajn Activity Monitora koji je do danas uglavnom ostao nepromijenjen.

10.1.1 nove funkcije predstavljene u SQL Server 2008

The SQL Server Redizajn Activity Monitora iz 2008. godine donio je značajna poboljšanja:

  • Grafička kontrolna ploča s grafikonima u stvarnom vremenu u oknu Pregled
  • Interfejs panela koji se može proširiti/sklopiti zamjenjuje stari prikaz samo u mreži
  • 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 za čekanje resursa s kategorizacijom čekanja
  • Kontekstni meniji desnim klikom miša za radnje procesa poput prekidanja sesija i pokretanja Profilera
  • Podesivi intervali osvježavanja od 1 sekunde do 1 sata

Ove promjene su transformirale Monitor aktivnosti iz jednostavne liste procesa u sveobuhvatnu kontrolnu ploču za praćenje.

10.1.2 Promjene u odnosu na SQL Server 2005

SQL Server Monitor aktivnosti iz 2005. godine bio je daleko ograničeniji:

  • Pristupa se putem mape Management u Object Exploreru, a ne putem alatne trake
  • Jedna tabela koja prikazuje listu 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. godine predstavljao je potpuno reinterpretiranje, a ne postepeno poboljšanje.

10.2 Monitor aktivnosti u SQL Server 2014/2016

SQL Server U 2014. i 2016. godini uvedena su postepena poboljšanja u osnovno prikupljanje podataka u Activity Monitoru, ali je vizuelno bilo malo promjena.

10.2.1 Poboljšanja i unapređenja

Ključna poboljšanja u ovim verzijama uključuju:

  • Bolje performanse pri praćenju servera sa hiljadama keširanih planova
  • Poboljšane mogućnosti filtriranja u oknu Procesi
  • Poboljšana tačnost agregacije statistike čekanja
  • Bolje rukovanje sortiranjem i filtriranjem kolona s velikim skupovima rezultata
  • Efikasniji DMV upiti smanjuju opterećenje nadzora

Osnovni interfejs je ostao konzistentan sa SQL Server 2008, održavajući familijarnost za administratore.

10.3 Monitor aktivnosti u SQL Server 2019/2022

skorašnji SQL Server Verzije nastavljaju evoluciju Activity Monitora s fokusom na performanse i stabilnost.

10.3.1 Najnovije funkcije i mogućnosti

SQL Server Monitor aktivnosti za 2019. i 2022. godinu uključuje:

  • Podrška za nove tipove č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 sa cloud SQL platformama
  • Preciznije metrike CPU-a i I/O-a

10.3.2 Poznati problemi u novijim verzijama

SQL Server 2019. godina je uvela nekoliko grešaka u Monitoru aktivnosti:

  • Trajno pauzirano stanje: Monitor aktivnosti često ulazi u stanje pauze i neće nastaviti s radom, posebno u SSMS-u 18.0-18.3. Ispravljeno u kasnijim verzijama SSMS-a.
  • Greške u udaljenom povezivanju: Neke konfiguracije spreč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 dodatne dozvole koje nisu jasno dokumentirane, što uzrokuje prazne prikaze čak i sa VIEW SERVER STATE.

Uvijek koristite najnoviju verziju SSMS-a kada radite sa SQL Server 2019. i 2022. godine kako bi se izbjegli ovi problemi.

11. Praktični slučajevi i primjeri upotrebe

Primjeri iz stvarnog svijeta pokazuju kako efikasno 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 za pregled

Otvorite Monitor aktivnosti i pregledajte okno Pregled:

  1. Grafikon % vremena procesora pokazuje 85-95% iskorištenosti procesora, što je znatno više od normalne osnovne vrijednosti od 30-40%.
  2. Broj zadataka na čekanju varira između 10 i 20, u odnosu na normalnu osnovnu vrijednost od 0 do 3.
  3. Ulazno/izlazni promet baze podataka pokazuje umjerenu aktivnost oko 50 MB/s.
  4. Broj zahtjeva za pakete/sek je niži od očekivanog i iznosi 100/sek, u odnosu na tipičnih 300-400/sek tokom radnog vremena.

Ovaj obrazac ukazuje na usko grlo CPU-a sa sukobom resursa koji uzrokuje smanjeni protok. Server radi naporno, ali ne obrađuje mnogo zahtjeva.

11.1.2 Identifikacija problematičnog upita

Proširite okno Nedavni skupi upiti i sortirajte po Izvršenjima/min:

  1. Najčešći upit pokazuje 15,000 izvršenja u minuti.
  2. Kliknite desnim tasterom miša i izaberite Uredi tekst upita da se ispita upit.
  3. Upit je jednostavna SELECT naredba koja preuzima zapis jednog korisnika: SELECT * FROM Users WHERE UserId = @UserId.
  4. Ovaj upit ne bi trebao da se izvršava 15,000 puta u minuti za normalno korištenje aplikacije.

Kliknite desnim tasterom miša na upit i izaberite Prikaži plan izvršenjaPlan prikazuje skeniranje tabele Korisnici s upozorenjem o nedostajućem indeksu u koloni UserId.

Filtrirajte okno Procesi po aplikaciji da biste prikazali samo veze web aplikacije. Više sesija prikazuje isti upit koji se ponavlja.

11.1.3 Rješavanje i verifikacija

Problem proizlazi iz dva razloga: prekomjernog broja izvršavanja upita i nedostajućeg indeksa. Koraci za rješavanje:

  1. Kreirajte nedostajući indeks:
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. Kontaktirajte razvojni tim o prekomjernom broju izvršavanja. Istraga otkriva problem N+1 upita u kodu aplikacije gdje petlja dohvaća korisničke podatke za svaku stavku na listi.
  3. Izmijenite aplikaciju grupirati korisničke pretrage u jedan upit pomoću IN klauzule ili parametra koji se vrijednuje kao tabela.
  4. Provjerite ispravku 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 prijavljuju da se sistem za unos narudžbi periodično zamrzava na 30-60 sekundi prije nego što nastavi normalan rad.

11.2.1 Detekcija lanca blokiranja

Otvorite Monitor aktivnosti tokom jednog od ovih zamrzavanja i proširite okno Procesi:

  1. sortiraj po ID sesije da vidite sve organizirane sesije.
  2. Više sesija prikazuje vrijednosti u Blokirao/la kolona, ​​sve pokazujući na ID sesije 73.
  3. Sesija 73 prikazuje '1' u Blokada glave kolona, ​​potvrđujući da je to osnovni uzrok.
  4. The Vrsta čekanja Za blokirane sesije prikazuje LCK_M_X, što ukazuje da čekaju ekskluzivne brave.
  5. The Resurs čekanja Kolona otkriva da je blokiranje na tabeli Narudžbe.

11.2.2 Analiza uzroka

Desnim klikom miša kliknite na Sesiju 73 i odaberite detalji da biste pogledali komandu:

UPDATE Orders 
SET Status = 'Processing', 
    LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);

Ovo ažuriranje je dio zadatka grupne obrade koji se izvršava svakog sata. Provjera Login Kolona potvrđuje da sesija pripada računu servisa za grupnu obradu.

Upit drži brave na tabeli Narudžbe dok obrađuje hiljade narudžbi. Vrijeme čekanja Broj blokiranih sesija stalno raste, što potvrđuje da je problem u ovoj dugotrajnoj operaciji.

11.2.3 Implementacija ispravke

Kratkoročno rješenje:

  1. Detalji dokumentirane sesije 73, uključujući tekst upita i trajanje.
  2. Dozvolite ažuriranje da se prirodno završi jer se radi o legitimnoj grupnoj obradi.
  3. Nakon završetka, provjerite jesu li blokirane sesije obrisane i je li nastavljen normalan rad.

Dugoročna implementirana rješenja:

  1. Ponovo zakažite batch zadatak da se odvija van vršnih sati (2-4 ujutro umjesto tokom radnog vremena).
  2. Izmijenite grupnu obradu ažurirati narudžbe u manjim serijama od po 100 zapisa odjednom, otključavajući brave između serija.
  3. Dodajte indeks u koloni OrderId kako biste ubrzali operaciju ažuriranja.
  4. Razmotrite izolaciju SNAPSHOT-a za operacije čitanja kako bi se smanjio uticaj blokiranja.

11.3 Studija slučaja: Identifikacija prekomjernog izvršavanja upita

Praćenje baze podataka pokazuje da se korištenje CPU-a postepeno povećavalo tokom proteklog mjeseca, ali nije došlo do očiglednih promjena u kodu aplikacije.

11.3.1 Uočavanje abnormalnog broja izvršenja

Otvorite Monitor aktivnosti i pregledajte okno Nedavni skupi upiti:

  1. sortiraj po Izvršenja/min da biste vidjeli najčešće izvršavane upite.
  2. Najčešći upit pokazuje 37,000 izvršenja u minuti - daleko više od bilo kojeg drugog upita.
  3. Kliknite desnim tasterom miša i izaberite Uredi tekst upita.
  4. Upit dohvaća informacije o kategoriji proizvoda:
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. Ovaj jednostavan upit bi trebao biti brz i keširan, a ipak se izvršava desetine hiljada puta u minuti.

11.3.2 Praćenje do aplikacijskog koda

U oknu Procesi pronađite sesije koje izvršavaju ovaj upit:

  1. Imajte na umu aplikacija U koloni se prikazuje „Usluga kataloga proizvoda“.
  2. Kliknite desnim tasterom miša na jednu od ovih sesija i izaberite Proces praćenja u SQL Server Profiler.
  3. SQL Profiler otkriva da se upit izvršava više puta u brzom slijedu s različitim vrijednostima CategoryId.
  4. Za pregled koda kontaktirajte razvojni tim koji upravlja ProductCatalogService.

Pregled koda otkriva problem: nedavna promjena dohvaća popise proizvoda s kategorijama. Za svaki proizvod u skupu rezultata (često preko 1,000 proizvoda), kod upućuje zaseban poziv bazi podataka kako bi dohvatio informacije o kategoriji - klasičan problem upita N+1.

11.3.3 Optimizacija aplikacije

Implementirajte odgovarajuću ispravku:

  1. Izmijenite upit aplikacije Za korištenje JOIN-a za preuzimanje 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;
    
  2. Implementirajte ažurirani kod i pratite Monitor aktivnosti.
  3. Potvrdite ispravku: Broj izvršenja u minuti za upit kategorije pada sa 37,000 na manje od 100, a ukupna upotreba CPU-a smanjuje se za 40%.
  4. Dokumentujte 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 u bazi podataka

Ako postoji oštećenje baze podataka i ako joj se pristupa, povremeno možete vidjeti:

1. U oknu Procesi:

  • Sesije zaglavljene u SUSPENDOVANOM 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 mogu ukazivati ​​na probleme s diskom (iako ovo vjerovatnije ukazuje na hardverske probleme, a ne na logičku korupciju)

3. U Nedavnim skupim upitima:

  • Upiti s neuobičajeno visokim fizičkim čitanjima ako više puta pokušavaju pročitati oštećene stranice

12.2 Dodatna provjera sa DBCC CHECKDB

Kada Activity Monitor prikaže 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 sume i greške logičke konzistentnosti.

Da biste saznali više o tome kako koristiti DBCC CHECKDB za provjeru i ispravljanje oštećenja baze podataka, pogledajte našu sveobuhvatni vodič za DBCC CHECKDB.

12.3 Popravka profesionalnim alatima

Ako DBCC CHECKDB potvrdi oštećenje baze podataka, imate nekoliko opcija za popravak:

13. zaključak

SQL Server Activity Monitor predstavlja neprocjenjiv alat za administratore baza podataka, pružajući neposredan uvid u performanse servera i pomažući u brzoj i efikasnoj dijagnostici problema.

13.1 Sažetak ključnih tačaka

U ovom vodiču istražili smo kako vam Monitor aktivnosti pomaže da razumijete i rješavate probleme SQL Server performanse:

  • Monitor aktivnosti pruža uvid u procese, čekanja, upite i I/O operacije u realnom vremenu putem organizovanog grafičkog interfejsa.
  • Pet panela – Pregled, Procesi, Čekanje resursa, U/I datoteka podataka i Nedavni skupi upiti – svaki nudi jedinstvene perspektive o aktivnosti servera.
  • Uobičajeni scenariji rješavanja problema poput prekomjernog izvršavanja upita, lanaca blokiranja i visoke upotrebe CPU-a postaju upravljivi sistematskom istragom Monitora aktivnosti.
  • Iako moćan, Monitor aktivnosti ima ograničenja, uključujući nedostatak historijskih podataka, grupiranje tipova čekanja i opterećenje nadzora, što utiče na njegovu primjenjivost.
  • Dopunjavanje Monitora aktivnosti DMV upitima, sp_WhoIsActive, proširenim događajima i potencijalno alatima trećih strana stvara sveobuhvatnu strategiju praćenja.
  • Praćenje najboljih praksi za intervale osvježavanja, zatvaranje Monitora aktivnosti kada se ne koristi i kombinovanje više panela za korelaciju maksimizira njegovu vrijednost uz minimiziranje uticaja.

13.2 Monitor aktivnosti kao dio vašeg kompleta alata

Monitor aktivnosti treba da služi kao vaš prvi alat za istrage performansi, a ne kao jedini alat. Njegova snaga leži u pružanju trenutne vidljivosti tokom aktivnog rješavanja problema, pomažući vam da brzo utvrdite da li je baza podataka usko grlo i identifikujete koje specifične aspekte treba dublje istražiti.

Zamislite Monitor aktivnosti kao analogiju kontrolne ploče u vašem automobilu – on vam odmah govori ako nešto nije u redu i pomaže vam da identificirate opće područje problema. Baš kao što vam kontrolna ploča vašeg automobila ne govori tač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 historijsko 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 programa Activity Monitor je samo jedan korak ka tome da postanete efikasan administrator baze podataka. Nastavite da razvijate svoje vještine tako što ćete:

  • Učenje tumačenja planova izvršenja i identifikacije neefikasnih operacija
  • razumijevanje SQL Server statistike čekanja i njihove implikacije
  • Proučavanje tehnika dizajna i optimizacije indeksa
  • istraživanje SQL ServerArhitektura i kako obrađuje upite
  • Prakticiranje metodologija sistematskog rješavanja problema
  • Izgradnja iskustva s proširenim događajima za detaljno praćenje
  • Razumijevanje nivoa izolacije transakcija i njihovog uticaja na performanse

Svako istraživanje performansi pomoću Activity Monitora vas uči 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 resursi

Proširite svoje znanje uz pomoć ovih vrijednih resursa:

14. Često postavljana pitanja (FAQ)

P: Šta je SQL Server ActivityMonitor?

A: SQL Server Monitor aktivnosti je ugrađeni alat unutar SQL Server Management Studio koji prikazuje informacije u realnom vremenu o procesima koji se izvršavaju na SQL Server instancu i njihov utjecaj na serverske resurse. Pruža grafičku kontrolnu ploču s pet panela koji prikazuju različite aspekte aktivnosti servera, uključujući korištenje procesora, zadatke čekanja, brzine ulazno/izlaznih operacija, aktivne sesije i skupe upite.

P: Kako da otvorim 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) Kliknite desnim tasterom miša na SQL Server naziv instance u Object Exploreru i odaberite Monitor Monitor, (3) Pritisnite Ctrl + alt + Aili (4) Konfigurišite SSMS da se automatski pokreće putem Alat -> mogućnosti -> ambijent -> Startup.

P: Koje dozvole su mi potrebne za korištenje Monitora aktivnosti?

O: Potrebno vam je POGLED STANJA SERVERA dozvola za pregled većine informacija iz Monitora aktivnosti. Za okno U/I datoteke podataka također vam je potrebno jedno od CREATE DATABASE, IZMIJENI BILO KOJU BAZU PODATAKA, ili POGLEDAJTE BILO KOJU DEFINICIJU dozvole. Bez ovih dozvola, Monitor aktivnosti se može otvoriti, ali prikazivati ​​prazne okvire.

P: Zašto je moj Monitor aktivnosti pauziran ili ne radi?

A: Monitor aktivnosti se obično pauzira zbog problema s dozvolama, zastarjelih verzija SSMS-a ili onemogućenih udaljenih veza. Da biste riješili problem: (1) Ažurirajte na najnoviju verziju SSMS-a, (2) Provjerite imate li dozvolu VIEW SERVER STATE, (3) Provjerite jesu li udaljene veze omogućene na SQL Server instanca, (4) Ponovo pokrenite SSMS i (5) Pokušajte se povezati s Windows autentifikacijom umjesto SQL autentifikacije ako je primjenjivo.

P: Koja je razlika između programa Activity Monitor 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 sa specifičnijim vrstama čekanja, detaljima blokiranja i opcijama prilagođavanja od Monitora aktivnosti. Monitor aktivnosti je bolji za vizualno istraživanje, dok sp_WhoIsActive odlično funkcionira u skriptiranom praćenju i pruža detaljnije informacije.

P: Da li Monitor aktivnosti utiče na performanse servera?

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 servera. Uvijek zatvorite Activity Monitor kada ga aktivno ne koristite i razmislite o intervalima osvježavanja od 30-60 sekundi na produkcijskim serverima pod velikim opterećenjem.

P: Mogu li dobiti podatke iz Activity Monitora koristeći T-SQL?

A: Da, Monitor aktivnosti šalje upite prikazima dinamičkog upravljanja sistemom kao što su sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats i sys.dm_exec_query_stats. Možete direktno upitati ove DMV-ove koristeći T-SQL za programsko dohvaćanje ekvivalentnih informacija, omogućavajuć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 što ćete desnim klikom miša bilo gdje u oknu Pregled odabrati Interval osvježavanjai odabirom između 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: Konfigurišite automatsko pokretanje putem SSMS opcija: Idite na Alat -> mogućnosti -> ambijent -> Startup, a zatim izaberite Otvorite Explorer objekata i Monitor aktivnosti iz Prilikom pokretanja padajući meni. Monitor aktivnosti će se automatski otvoriti svaki put kada se povežete sa serverom u SSMS-u.

P: Koja su ograničenja Monitora aktivnosti?

A: Ključna ograničenja uključuju: (1) Nema mogućnosti pohranjivanja historijskih podataka ili praćenja trendova, (2) Vrste čekanja su grupirane u kategorije umjesto da se prikazuju specifično, (3) Neke vrste čekanja poput CXPACKET se možda neće pojaviti, (4) Snimci u određenom trenutku mogu propustiti prolazne probleme, (5) Opterećenje nadzora može utjecati na zauzete servere, (6) Nema mehanizma upozorenja za proaktivno praćenje i (7) Ne mogu se agregirati podaci iz više SQL Server instance. Za ove potrebe, dopunite Monitor aktivnosti proširenim događajima, skupovima za prikupljanje podataka ili alatima za praćenje trećih strana.


o autoru

Yuan Sheng je viši administrator baze podataka (DBA) sa preko 10 godina iskustva u SQL Server okruženja i upravljanje bazama podataka u preduzećima. Uspješno je riješio stotine scenarija oporavka baza podataka u organizacijama finansijskih usluga, zdravstva i proizvodnje.

Yuan je specijaliziran za SQL Server oporavak baze podataka, rješenja visoke dostupnosti, i 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 za sigurnosno kopiranje i oporavak za poslovne sisteme od kritične važnosti.

Svojim tehničkim znanjem i praktičnim pristupom, Yuan se fokusira na kreiranje sveobuhvatnih vodiča koji pomažu administratorima baza podataka i IT stručnjacima da riješe složene probleme. SQL Server efikasno rješava izazove. On prati najnovije SQL Server izdanja i Microsoftove tehnologije baza podataka koje se razvijaju, redovno testirajući scenarije oporavka kako bi osigurao da njegove preporuke odražavaju najbolje prakse iz stvarnog svijeta.

Imate pitanja o SQL Server oporavak ili vam trebaju dodatne smjernice za rješavanje problema s bazom podataka? Yuan pozdravlja povratne informacije i prijedlozi za poboljšanje ovih tehničkih resursa.

Podijeli sada: