Skupna raba zdaj:
Kazalo skrij

1. Predstavitev

1.1 Kaj je SQL Server ActivityMonitor?

SQL Server Nadzornik aktivnosti je vgrajeno diagnostično orodje v SQL Server Management Studio, ki prikazuje informacije o SQL Server procese in njihov vpliv na delovanje strežnika. Omogoča vam sledenje SQL Server procese, spremljanje čakanja virov, analiziranje dragih poizvedb in opazovanje vzorcev V/I – vse iz enega samega vmesnika.

SQL Server Monitor dejavnost

1.2 Zakaj uporabljati SQL Server ActivityMonitor?

Nadzornik aktivnosti služi kot vaša prva obrambna linija pri odpravljanju težav z zmogljivostjo. Zagotavlja takojšen vpogled v dogajanje na vašem SQL Server primerek brez potrebe po zapletenih poizvedbah T-SQL ali orodjih drugih ponudnikov.

Orodje blesti pri hitrem prepoznavanju pogostih težav, kot so blokiranje sej, poizvedbe, ki intenzivno uporabljajo CPE, prekomerno izvajanje poizvedb in ozka grla V/I. Ko uporabniki poročajo, da je aplikacija počasna ali se ne odziva, vam Activity Monitor pomaga ugotoviti, ali je krivec strežnik baze podatkov.

Za skrbnike baz podatkov, ki ne delajo z SQL Server Activity Monitor dnevno ponuja dostopno vstopno točko za razumevanje dejavnosti strežnika. Tudi izkušeni skrbniki baz podatkov ga uporabljajo kot izhodišče za preiskave delovanja.

1.3 Spremljalnik aktivnosti v primerjavi z drugimi orodji za spremljanje

Čeprav je Activity Monitor dragocen, je pomembno razumeti, kako se primerja z drugimi možnostmi spremljanja:

Nadzornik aktivnosti v primerjavi s sp_WhoIsActive: Nadzornik aktivnosti ponuja grafični vmesnik z več podokni, medtem ko je sp_WhoIsActive obsežna shranjena procedura, ki ponuja podrobnejše informacije v enem samem naboru rezultatov. sp_WhoIsActive prikazuje specifične vrste čakanja, ki jih Nadzornik aktivnosti združuje, in zagotavlja podrobnejše informacije o blokiranju.

Monitor aktivnosti v primerjavi s sp_who2: Tradicionalni ukaz sp_who2 prikazuje osnovne informacije o seji, vendar Activity Monitor gre še dlje, saj prikazuje statistiko čakanja, drage poizvedbe in metrike V/I v organizirani, vizualni obliki.

Spremljalnik aktivnosti v primerjavi z orodji tretjih oseb: Komercialne rešitve za spremljanje, kot je SolarWinds Database Performance Analyzer, ponujajo sledenje zgodovine, opozarjanje in napredno analitiko, ki jih Activity Monitor nima. Vendar pa Activity Monitor ne zahteva dodatnih stroškov ali namestitve.

1.4 Ključne prednosti za skrbnike baz podatkov

Monitor aktivnosti ponuja več prednosti, zaradi katerih je bistveno orodje za upravljanje baz podatkov:

  • Ničelni stroški: Kot vgrajena SQL Server Funkcija Management Studio ne zahteva licenčnine ali uvajanja.
  • Spremljanje v realnem času: Spremljajte trenutno aktivnost strežnika sproti, z nastavljivimi intervali osveževanja od 1 sekunde do 1 ure.
  • Integrirani ukrepi: Z desno miškino tipko kliknite procese, da ustavite seje, si ogledate podrobnosti poizvedbe ali jih zaženete. SQL Server Sledi profilerja – vse iz orodja.
  • Več perspektiv: Oglejte si stanje strežnika z različnih zornih kotov prek petih specializiranih podoken, od katerih se vsako osredotoča na specifične vidike delovanja.
  • Hitro odpravljanje težav: Najpogostejše težave z delovanjem prepoznajte v nekaj minutah in s tem skrajšajte povprečni čas do rešitve.
  • Nizka ovira za vstop: Za učinkovito uporabo orodja ni potrebno napredno znanje, čeprav je potrebno globlje znanje. SQL Server strokovno znanje pomaga pri interpretaciji.

2. Uvod v delo z nadzornikom aktivnosti

Preden lahko učinkovito uporabite orodje Activity Monitor, morate razumeti predpogoje, potrebna dovoljenja in različne načine za zagon orodja.

2.1 Predpogoji in sistemske zahteve

Uporabiti SQL Server Monitor aktivnosti, ki ga potrebujete SQL Server Management Studio (SSMS), nameščen na vašem lokalnem računalniku ali strežniku Jump. Orodje Activity Monitor je bilo v letu 2006 bistveno prenovljeno. SQL Server 2008, zato se informacije v tem priročniku nanašajo na SQL Server Različice iz leta 2008 in novejše.

Imeti morate omrežno povezavo z SQL Server primerek, ki ga želite spremljati. Za baze podatkov, ki gostujejo v oblaku, boste za dostop do primerka običajno potrebovali povezavo VPN ali pravilno konfigurirana pravila požarnega zidu.

Monitor aktivnosti deluje z vsemi izdajami SQL Server, vključno z Express, Standard in Enterprise. Orodje samo deluje na odjemalskem računalniku znotraj SSMS, zato na vire strežnika vplivajo le nadzorne poizvedbe, ki jih izvaja.

2.2 Zahtevana dovoljenja

Za pravilno delovanje programa Activity Monitor so bistvena ustrezna dovoljenja. Brez ustreznih pravic se lahko prikaže prazen zaslon ali pa se prikažejo napake »dostop zavrnjen«.

2.2.1 Dovoljenje za ogled stanja strežnika

Naš OGLEJ STANJE STREŽNIKA Dovoljenje je glavna zahteva za uporabo programa Activity Monitor. To dovoljenje na ravni strežnika vam omogoča ogled vseh aktivnih procesov in z njimi povezanih meritev.

Za podelitev tega dovoljenja lahko skrbnik strežnika izvede:

GRANT VIEW SERVER STATE TO [YourLoginName];

Brez možnosti VIEW SERVER STATE se lahko Nadzornik aktivnosti odpre, vendar v nobenem od podoknov ne prikaže podatkov.

2.2.2 Dovoljenja na ravni baze podatkov

Za ogled informacij v podoknu V/I podatkovnih datotek potrebujete dodatna dovoljenja. Natančneje, imeti morate eno od naslednjih kombinacij:

  • Ustvari bazo podatkov dovoljenje oz.
  • SPREMENI POLJUBNO ZBIRKO PODATKOV dovoljenje oz.
  • OGLEJTE SI POLJUBNO DEFINICIJO Dovoljenje

Ta dovoljenja je treba kombinirati z OGLEJ STANJE STREŽNIKA za polno funkcionalnost Nadzornika aktivnosti.

2.2.3 Odpravljanje težav z dovoljenji

Če se Nadzornik aktivnosti odpre, vendar ne prikazuje podatkov, so najpogostejši vzrok dovoljenja. Preverite, ali ima vaša prijava na ravni strežnika odobreno dovoljenje VIEW SERVER STATE. Dovoljenja lahko preverite tako, da zaženete:

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

V stolpcu z imenom dovoljenja poiščite »VIEW SERVER STATE«. Če manjka, se za odobritev obrnite na skrbnika baze podatkov.

2.3 Kako odpreti nadzornik aktivnosti v SSMS

SQL Server Management Studio ponuja štiri različne načine za zagon programa Activity Monitor, kar vam daje prilagodljivost glede na vaše nastavitve delovnega toka.

2.3.1 1. način: Iz orodne vrstice

Najhitrejši način za odpiranje Nadzornika aktivnosti je z ikono orodne vrstice:

  1. Povežite se s svojim SQL Server primer v SQL Server Studio za upravljanje.
  2. V standardni orodni vrstici poiščite ikono Nadzornika aktivnosti (podobna je stolpčnemu grafikonu z zelenim gumbom za predvajanje).
  3. Kliknite ikono, da zaženete Nadzornik aktivnosti.

Začetek SQL Server Nadzor aktivnosti iz ikone orodne vrstice v SQL Server Studio za upravljanje.

Ta metoda je najhitrejša, če že delate v SSMS in morate hitro preveriti aktivnost strežnika.

2.3.2 2. način: Iz Raziskovalca objektov

Nadzornik aktivnosti lahko zaženete tudi neposredno iz Raziskovalca objektov:

  1. V Raziskovalcu objektov poiščite SQL Server primerek, ki ga želite spremljati.
  2. Z desno miškino tipko kliknite ime primerka.
  3. Izberite Monitor dejavnost iz kontekstnega menija.

Začetek SQL Server Nadzornik dejavnosti tako, da z desno tipko miške kliknete primerek v Raziskovalcu objektov v SQL Server Studio za upravljanje.

Ta metoda je uporabna pri povezovanju z več strežniki, saj zagotavlja, da spremljate pravilen primerek.

2.3.3 3. način: Uporaba bližnjice na tipkovnici

Za uporabnike, ki se osredotočajo na tipkovnico, SQL Server Management Studio ponuja namensko bližnjico:

  1. Prepričajte se, da je SSMS aktivno okno in da ste povezani z instanco.
  2. Pritisnite Ctrl + druga + A.
  3. Nadzornik aktivnosti se bo odprl za trenutno izbrani primerek v Raziskovalcu objektov.

Upoštevajte, da se bo Activity Monitor povezal s katerim koli primerkom strežnika, ki ste ga izbrali v Object Explorerju, zato se pred uporabo te bližnjice prepričajte, da ste izbrali pravilen primerek.

2.3.4 Metoda 4: Iz menija z možnostmi (Konfiguracija zagona)

Če pogosto uporabljate Activity Monitor, lahko SSMS konfigurirate tako, da ga samodejno zažene vsakič, ko zaženete aplikacijo:

  1. In SQL Server Management Studio, pojdite na Orodja -> možnosti.
  2. V pogovornem oknu Možnosti razširite OkoljeIn nato izberite Zagon.
  3. Iz Ob zagonu spustnem seznamu izberite Odprite Raziskovalec objektov in Nadzornik dejavnosti.
  4. Izberite OK.

Nastavite zagonsko konfiguracijo za SQL Server Monitor aktivnosti v SQL Server Studio za upravljanje.

Ko naslednjič zaženete SSMS in se povežete s strežnikom, se bo Monitor aktivnosti samodejno odprl skupaj z Raziskovalcem objektov.

3. Razumevanje oken za spremljanje dejavnosti

Nadzornik aktivnosti organizira informacije v pet razširljivih podoken, od katerih vsako ponuja drugačen pogled na aktivnost strežnika. Razumevanje, kaj posamezno podokno prikazuje, je ključnega pomena za učinkovito odpravljanje težav.

3.1 Podokno s pregledom

V podoknu Pregled so prikazani štirje grafi v realnem času, ki vam omogočajo hiter pregled zdravja vašega SQL Server na primer. Ti grafi se posodabljajo v nastavljivem intervalu in vam pomagajo na prvi pogled prepoznati nenavadne vzorce.

Podokno s pregledom v SQL Server Monitor aktivnosti.

3.1.1 % procesorskega časa

Ta graf prikazuje odstotek časa, ki ga procesor porabi za izvajanje niti, ki niso v mirovanju, za SQL Server primerek v vseh CPU-jih. Vrednost predstavlja SQL Serverizkoriščenost procesorja, ne pa celotna poraba procesorja strežnika.

Če se procesorski čas nenehno giblje okoli 100 % ali več, je vaš strežnik omejen na procesor. To lahko kaže na neučinkovite poizvedbe, manjkajoče indekse ali nezadostno zmogljivost strojne opreme. V podoknu Nedavne drage poizvedbe ugotovite, katere poizvedbe porabljajo največ procesorja.

3.1.2 Čakalne naloge

Ta metrika prikazuje število opravil, ki čakajo na sprostitev virov, preden se lahko nadaljujejo. Opravila lahko čakajo na CPU, V/I, pomnilnik ali zaklepanja.

Dosledno veliko število čakajočih opravil kaže na spore glede virov. Podokno Čakanje virov ponuja več podrobnosti o tem, katere vrste virov povzročajo čakanje.

3.1.3 V/I podatkovne baze (MB/s)

Ta graf prikazuje hitrost prenosa podatkov med pomnilnikom in diskom. Združuje branje in pisanje, merjeno v megabajtih na sekundo.

Konice v V/I podatkovni bazi lahko kažejo na poizvedbe, ki izvajajo pregledovanje velikih tabel, prekomerno aktivnost beleženja ali operacije kontrolnih točk. Podokno V/I podatkovne datoteke razčlenjuje V/I aktivnost po podatkovni bazi in datoteki.

3.1.4 Paketne zahteve/s

Ta metrika predstavlja število SQL Server paketi, ki jih instanca prejme na sekundo. Paket je lahko en sam stavek ali več stavkov, poslanih skupaj.

Ta vrednost vam daje občutek za splošno aktivnost strežnika. Nenadni upadi paketnih zahtev med običajnim delovnim časom lahko kažejo na težave s povezljivostjo aplikacij ali težave, s katerimi se soočajo uporabniki.

3.1.5 Nastavitev intervalov osveževanja

Prilagodite lahko, kako pogosto Nadzornik aktivnosti posodablja svoje podatke:

  1. Z desno tipko miške kliknite kjer koli v podoknu Pregled.
  2. Izberite Interval osveževanja.
  3. Izberite interval med vnaprej določenimi vrednostmi: 1 sekunda, 5 sekund, 10 sekund (privzeto), 30 sekund, 1 minuta ali 1 ura.

Nastavite interval osveževanja v SQL Server Pregledna plošča za spremljanje aktivnosti.

Če nastavite intervale osveževanja pod 10 sekund, se poveča obremenitev strežnika za spremljanje. Za produkcijske sisteme z veliko obremenitvijo razmislite o uporabi intervalov 30 sekund ali več, da zmanjšate vpliv.

3.2 Podokno Procesi

V podoknu Procesi so prikazane informacije o trenutno delujočih sejah na vašem SQL Server primer. To podokno je bistveno za ugotavljanje, kdo kaj počne, in odkrivanje težav, ki blokirajo delovanje.

Podokno Procesi v SQL Server Monitor aktivnosti.

3.2.1 Razumevanje informacij o procesu

Vsaka vrstica v podoknu Procesi predstavlja aktivno sejo na strežniku. Podokno prikazuje seje iz vseh baz podatkov in vseh uporabnikov, kar vam omogoča celovit pregled dejavnosti strežnika.

Prikazane informacije vključujejo prijavno ime, ime aplikacije, ime gostitelja, dostopno bazo podatkov in trenutni ukaz. To vam pomaga povezati dejavnost baze podatkov z določenimi uporabniki ali aplikacijami.

3.2.2 Razlaga ključnih stolpcev

Razumevanje ključnih stolpcev vam pomaga učinkovito interpretirati informacije o procesu:

  • ID seje: Enolični identifikator za vsako povezavo. Sistemski procesi uporabljajo negativne ID-je sej.
  • Uporabniški postopek: Označuje, ali gre za uporabniško sejo (Da) ali sistemski proces (Ne).
  • Prijava: Naš SQL Server prijavo ali račun Windows, povezan s sejo.
  • Baza podatkov: Trenutni kontekst baze podatkov za sejo.
  • Stanje naloge: Prikazuje, kaj seja trenutno počne (TEČE, PREKINJENO, SPANJE itd.).
  • ukaz: Vrsta ukaza, ki se izvaja (SELECT, INSERT, UPDATE itd.).
  • uporaba: Ime aplikacije, ki je ustvarila povezavo.
  • Čas čakanja: Kako dolgo (v milisekundah) seja čaka na vire.
  • Vrsta čakanja: Določena vrsta vira, na katero seja čaka.
  • Čas procesorja: Skupni čas procesorja, ki ga je ta seja porabila od vzpostavitve povezave.
  • Uporaba pomnilnika: Količina pomnilnika (v KB), ki je trenutno dodeljena seji.

3.2.3 Postopki filtriranja in razvrščanja

Podokno Procesi vključuje zmogljive možnosti filtriranja, ki vam pomagajo osredotočiti se na ustrezne seje:

  1. Kliknite puščico spustnega menija v poljubni glavi stolpca.
  2. Filter prikaže razpoložljive vrednosti za ta stolpec, vključno z vsi, Slepo strelivoin Neprazni elementi.
  3. Izberite določene vrednosti, da filtrirate prikaz samo na te seje.

Filtriraj procese v SQL Server Monitor aktivnosti.

Na primer, lahko filtrirate Stanje naloge za prikaz samo TEKOČIH sej ali filtriranje Baze podatkov za ogled aktivnosti v določeni zbirki podatkov.

Razvrščanje po katerem koli stolpcu je možno tudi s klikom na njegovo glavo. Kliknite enkrat za naraščajoči vrstni red, dvakrat za padajoči vrstni red.

Razvrsti procese v SQL Server Monitor aktivnosti.

3.2.4 Prepoznavanje blokiranih in blokiranih sej

Podokno Procesi vam pomaga prepoznati scenarije blokiranja, kjer ena seja preprečuje nadaljevanje drugim:

  • Blokiral/a: Prikazuje ID seje, ki blokira to sejo. Če ta stolpec vsebuje vrednost, seja čaka na zaklepanje, ki ga ima druga seja.
  • Blokada glave: Prikaže »1«, če ta seja blokira druge, vendar sama ni blokirana. To je glavni vzrok za verigo blokiranja.

Prikaži blokirane in onemogočene procese v SQL Server Monitor aktivnosti.

Če želite raziskati težavo z blokiranjem, najprej identificirajte blokator glave (sejo, označeno z '1' v stolpcu Blokator glave), nato preglejte, kaj počne, in se odločite, ali jo boste pustili dokončati ali prekinili.

3.2.5 Dejanja procesa (uničenje, podrobnosti, sledenje)

Nadzornik aktivnosti vam omogoča izvajanje dejanj v posameznih sejah:

  1. Z desno miškino tipko kliknite katero koli sejo v podoknu Procesi.
  2. Videli boste več možnosti:
    • Podrobnosti: Prikaže zadnji ukaz, ki ga je izvedla ta seja.
    • Postopek ubijanja: Prekine sejo (uporabljajte previdno).
    • Sledenje procesa v SQL Server profiler: Pobudnik SQL Server Profil in samodejno filtrira, da prikaže samo dejavnost iz te seje.

Izvedite dejanja v procesih v SQL Server Monitor aktivnosti.

Možnost Podrobnosti prikaže besedilo ukaza, vendar upoštevajte, da je to zadnja ukaz izveden – morda se še ne izvaja. Možnost Sledenje je še posebej uporabna, kadar si morate ogledati celotno zaporedje ukazov, ki jih seja izvaja.

3.3 Podokno čakanja na vire

Podokno Čakanje virov povzema statistiko čakanja in prikazuje, na katere vrste sej virov čakajo najpogosteje. Te informacije so ključne za diagnosticiranje ozkih grl v delovanju.

Podokno Čakanje na vire v SQL Server Monitor aktivnosti.

3.3.1 Razumevanje statistike čakanja

Kdaj SQL Server Če strežnik ne more takoj odobriti zahteve za vir (kot je zaklepanje, čas CPU-ja ali pomnilnik), zahtevajoča naloga preide v stanje čakanja. Statistika čakanja spremlja ta čakalna obdobja in vam pomaga razumeti, kje strežnik porablja čas s čakanjem namesto z delom.

Podokno Čakanje na vire zbira podatke iz pogledov dinamičnega upravljanja sistema, kot sta sys.dm_os_wait_stats in sys.dm_exec_requests. Ob vsakem intervalu osveževanja izračuna razliko med trenutnim in prejšnjim posnetkom ter prikaže stopnjo kopičenja za vsako vrsto čakanja.

3.3.2 Kategorije čakanja

Nadzornik aktivnosti združuje stotine posameznih vrst čakanja v širše kategorije za poenostavitev interpretacije:

  • Procesor: Naloge, ki čakajo, da bo čas procesorja na voljo.
  • Zapah medpomnilnika: Čaka na kratkoročne sinhronizacijske objekte, ki ščitijo dostop do podatkovnih strani v pomnilniku. Ta kategorija vključuje čakanja na zaklepanje strani (PAGELATCH_*).
  • Zaklepanje: Čakanja, ki jih povzročajo seje, ki imajo zaklepe, ki jih potrebujejo druge seje.
  • Spomin: Čaka na dodelitve pomnilnika, ki jih potrebujejo operacije, kot sta sortiranje in zgoščevanje.
  • Omrežni V/I: Čaka na pošiljanje podatkov odjemalcem ali prejemanje podatkov od njih.
  • SQL CLR: Čakanja, povezana z izvajanjem izvajalnega okolja Common Language Runtime.

Čeprav to združevanje poenostavi pogled, hkrati zakrije pomembne podrobnosti. Na primer, »Buffer Latch« lahko združi čakalne funkcije PAGELATCH_SH, PAGELATCH_UP in PAGELATCH_EX, ki imajo različne posledice za delovanje.

3.3.3 Razlaga časa čakanja in opravil čakanja

V podoknu Čakanja na vire sta za vsako kategorijo čakanja prikazani dve ključni metriki:

  • Skupni čas čakanja (ms): Skupno število milisekund, zbranih med trenutnim intervalom osveževanja za to kategorijo čakanja.
  • Čakalne naloge: Število opravil, ki trenutno čakajo na vire v tej kategoriji.

Vrednost časa čakanja je še posebej zanimiva. Če imate 10-sekundni interval osveževanja in vidite 20,000 ms časa čakanja za kategorijo, to kaže na več sočasnih čakanj (20,000 ms / 10,000 ms = povprečje 2 sočasnih čakanj v intervalu).

3.3.4 Prepoznavanje ozkih grl v uspešnosti

V podoknu Čakanje virov lahko ugotovite, kje vaš strežnik največ časa čaka:

  1. Razširite podokno Čakanje na vire.
  2. Opazujte kategorije čakanja, ki imajo najvišje čakalne čase.
  3. Razvrsti po Skupni čas čakanja da bi videli, kateri viri so najbolj omejeni.

V podoknu Čakanje na vire razvrstite po skupnem času čakanja, da poiščete ozko grlo zmogljivosti.

Čakanja z veliko zaklepanja medpomnilnika pogosto kažejo na spore za podatkovne strani v pomnilniku, kar lahko kaže na ozka grla V/I ali spore za tempdb. Čakanja z veliko zaklepanja kažejo na težave z blokiranjem. Čakanja z veliko pomnilnika kažejo na nezadostne dodelitve pomnilnika za operacije poizvedb.

3.4 Podokno V/I podatkovnih datotek

Podokno V/I podatkovnih datotek prikazuje aktivnost diska za vsako datoteko baze podatkov na vašem strežniku, kar vam pomaga prepoznati ozka grla V/I in razumeti vzorce izrabe diska.

Podokno V/I podatkovnih datotek v SQL Server Monitor aktivnosti.

3.4.1 Razumevanje metrik V/I

Podokno V/I podatkovnih datotek prikazuje več metrik za vsako datoteko zbirke podatkov:

  • Baza podatkov: Ime baze podatkov.
  • Vrsta datoteke: Bodisi podatki (vključno s tabelami in indeksi) bodisi dnevnik (dnevnik transakcij).
  • Logično ime: Logično ime datoteke, kot je definirano v SQL Server.
  • MB/s branje: Hitrost branja podatkov iz te datoteke.
  • MB/s Zapisano: Hitrost zapisovanja podatkov v to datoteko.
  • Odzivni čas (ms): Povprečni odzivni čas za vhodno/izhodne operacije v tej datoteki.

Te metrike se osvežujejo v enakem intervalu kot podokno Pregled, kar vam omogoča vpogled v aktivnost diska v realnem času.

3.4.2 Prepoznavanje ozkih grl V/I

Bodite pozorni na te vzorce, ki kažejo na težave z zmogljivostjo V/I:

  • Visok odzivni čas: Odzivni časi, ki so stalno nad 15–20 ms, kažejo na počasne diskovne podsisteme. Odzivni časi nad 50 ms kažejo na resna ozka grla V/I.
  • Neuravnotežena obremenitev: Če ena podatkovna datoteka kaže bistveno višje stopnje V/I kot druge v isti zbirki podatkov, vam lahko koristi dodajanje dodatnih datotek za porazdelitev obremenitve.
  • Prekomerna aktivnost tempdb: Visoke hitrosti V/I v datotekah tempdb pogosto kažejo na poizvedbe, ki ustvarjajo velike vmesne nabore rezultatov ali uporabljajo neučinkovite načrte izvajanja.

3.4.3 Analiza datotek baze podatkov

Za razumevanje, kako vaše baze podatkov uporabljajo diskovne vire, uporabite podokno V/I podatkovnih datotek:

  1. Razširite podokno V/I podatkovnih datotek.
  2. Razvrsti po MB/s branje or MB/s zapisano za prepoznavanje najbolj aktivnih datotek.
  3. Zapišite si vse datoteke z dosledno visoko aktivnostjo ali dolgimi odzivnimi časi.
  4. Te podatke primerjajte s podoknom Nedavne drage poizvedbe, da ugotovite, katere poizvedbe povzročajo obremenitev V/I.

Razvrstite po prebranih ali zapisanih datotekah, da prepoznate najbolj aktivne datoteke v podoknu V/I podatkovnih datotek.

3.5 Podokno Nedavne drage poizvedbe

Podokno Nedavne drage poizvedbe je pogosto najkoristnejše podokno za odpravljanje težav z delovanjem aplikacij. Prikazuje poizvedbe, ki porabljajo veliko strežniških virov, kar vam pomaga prepoznati priložnosti za optimizacijo.

Podokno Nedavne drage poizvedbe v SQL Server Monitor aktivnosti.

3.5.1 Razumevanje metrik poizvedb

Nadzornik aktivnosti prikazuje več meritev za vsako drago poizvedbo:

  • Izvedbe/min: Kolikokrat se je poizvedba izvedla v zadnji minuti.
  • Procesor (ms/s): Čas procesorja, ki ga ta poizvedba porabi na sekundo.
  • Fizičnih branj/s: Število branj fizičnega diska na sekundo za to poizvedbo.
  • Logično pisanje/s: Število logičnih zapisov (v predpomnilnik) na sekundo.
  • Logična branja/s: Število logičnih branj (iz predpomnilnika) na sekundo.
  • Povprečno trajanje (ms): Povprečni čas izvajanja za to poizvedbo.
  • Število načrtov: Število izvedbenih načrtov v predpomnilniku za to poizvedbo.

Te meritve vam pomagajo razumeti ne le, katere poizvedbe so drage, ampak tudi zakaj so dragi in kako pogosto tečejo.

3.5.2 Možnosti razvrščanja

Podokno Nedavne drage poizvedbe lahko razvrstite po različnih metrikah, da poiščete različne vrste težav:

  1. Kliknite katero koli glavo stolpca, da razvrstite po tej metriki.
  2. Pogoste strategije razvrščanja vključujejo:
    • Razvrsti po procesorju: Poiščite poizvedbe, ki porabijo največ procesorskega časa.
    • Razvrsti po Izvedbe/min: Prepoznajte poizvedbe, ki se izvajajo pretirano pogosto.
    • Razvrsti po fizičnem branju: Poiščite poizvedbe, ki povzročajo največ diskovnega V/I.
    • Razvrsti po povprečnem trajanju: Poiščite dolgotrajne poizvedbe.

Pri odpravljanju težav z zmogljivostjo poskusite razvrščati po več stolpcih, da dobite različne perspektive. Poizvedba z zmerno porabo procesorja, vendar izjemno visokim številom izvedb na minuto je lahko vaša resnična težava.

3.5.3 Ogled besedila poizvedbe

Če si želite ogledati dejanski stavek SQL za drago poizvedbo:

  1. Z desno tipko miške kliknite vrstico poizvedbe v podoknu Nedavne drage poizvedbe.
  2. Izberite Urejanje besedila poizvedbe.
    Uredite besedilo poizvedbe v podoknu Nedavne drage poizvedbe.
  3. Odpre se novo okno poizvedbe, ki prikazuje celoten stavek SQL.
    Novo okno poizvedbe po izbiri možnosti »Uredi besedilo poizvedbe« v podoknu Nedavne drage poizvedbe.

To vam omogoča, da preučite logiko poizvedbe in prepoznate morebitne priložnosti za optimizacijo. Nato lahko kopirate besedilo poizvedbe za testiranje spremenjenih različic.

3.5.4 Analiza izvedbenih načrtov

Izvedbeni načrti vam pokažejo, kako SQL Server izvede poizvedbo in razkrije neučinkovitosti, kot so manjkajoči indeksi ali neprimerne vrste združevanja:

  1. Z desno tipko miške kliknite vrstico poizvedbe v podoknu Nedavne drage poizvedbe.
  2. Izberite Prikaži načrt izvedbe.
    Prikaži načrt izvedbe v podoknu Nedavne drage poizvedbe.
  3. SQL Server Management Studio prikaže grafični prikaz izvajanja poizvedbe.
    Načrt izvedbe poizvedbe v novem oknu.

Bodite pozorni na operacije, ki porabijo velik odstotek stroškov poizvedbe, opozorila o manjkajočih statističnih podatkih ali indeksih in nepričakovane operacije skeniranja tabel. Te pogosto kažejo, kam se je treba osredotočiti pri optimizaciji.

3.5.5 Prepoznavanje problematičnih poizvedb

V podoknu Nedavne drage poizvedbe bodite pozorni na te vzorce:

  • Prekomerne usmrtitve: Poizvedba, ki se izvaja tisočkrat na minuto, lahko kaže na problem poizvedbe N+1, kjer aplikacijska koda kliče bazo podatkov znotraj zanke.
  • Visoka fizična odčitavanja: Poizvedbe z visokimi stopnjami fizičnega branja pogosto zadenejo disk, kar kaže na manjkajoče indekse ali slabo napisane poizvedbe.
  • Visoka zmogljivost procesorja z nizkim trajanjem: Številne hitre poizvedbe, ki skupaj porabijo veliko procesorske moči, lahko vplivajo na delovanje strežnika prav tako kot nekaj počasnih poizvedb.
  • Več štetij načrtov: Poizvedbe z veliko načrti izvajanja lahko trpijo zaradi težav s vohanjem parametrov ali pa neparametrizirane poizvedbe povzročajo napihnjenost predpomnilnika načrtov.

4. Uporaba nadzornika aktivnosti za odpravljanje težav z zmogljivostjo

Nadzornik aktivnosti resnično zasije, če ga sistematično uporabljate za diagnosticiranje in odpravljanje težav z zmogljivostjo. Ta razdelek obravnava pogoste scenarije odpravljanja težav in kako se jim lotiti.

4.1 Diagnosticiranje prekomernih izvedb poizvedb

Ena najpogostejših težav z zmogljivostjo je, da se poizvedbe izvajajo veliko pogosteje, kot je potrebno, pogosto zaradi težav z zasnovo aplikacije.

4.1.1 Prepoznavanje ponavljajočih se poizvedb

Če želite odkriti poizvedbe, ki se izvajajo prepogosto:

  1. Odprite Nadzornik dejavnosti in razširite Nedavne drage poizvedbe okno.
  2. Razvrsti po Izvedb/min (število izvedb na minuto).
  3. Na vrhu poiščite poizvedbe s številom izvedb, ki se zdi nerazumno visoko.
  4. Z desno tipko miške kliknite sumljivo poizvedbo in izberite Urejanje besedila poizvedbe za pregled stavka SQL.

Če na primer vidite preprost stavek SELECT, ki se izvede 37,000-krat na minuto, se vprašajte, ali mora aplikacija res tako pogosto klicati to poizvedbo. Večina poizvedb, ki se izvedejo več kot nekaj tisočkrat na minuto, zahteva preiskavo.

4.1.2 Analiza temeljnih vzrokov

Prekomerno izvajanje poizvedb običajno izvira iz teh težav:

  • Problem poizvedbe N+1: Koda aplikacije pridobi seznam elementov, nato pa za vsak element izvede ločeno poizvedbo, da pridobi povezane podatke. To ustvari N dodatnih poizvedb, kjer je N število elementov.
  • Manjkajoče predpomnjenje: Aplikacija poizveduje po zbirki podatkov za podatke, ki se redko spreminjajo, namesto da bi jih shranila v predpomnilnik aplikacije.
  • Zanke anketiranja: Koda večkrat poizveduje po zbirki podatkov in preverja spremembe stanja, namesto da bi uporabljala obvestila o spremembah ali čakalne vrste sporočil.
  • Neučinkovitost ORM: Entity Framework in podobna orodja včasih ustvarijo neučinkovite vzorce poizvedb, če razvijalci ne razumejo, kako se njihova koda prevede v SQL.

Če želite ugotoviti temeljni vzrok, sledite poizvedbi nazaj do kode aplikacije. Upoštevajte uporaba in Login stolpce v podoknu Procesi, ko se poizvedba izvede. Lahko pa tudi kliknete proces z desno tipko miške in izberete Sledenje procesa v SQL Server Profil da si ogledate vzorec klicanja.

4.1.3 Rešitve in najboljše prakse

Ko ugotovite prekomerno število izvajanj poizvedb, razmislite o teh rešitvah:

  • Paketna obdelava: Spremenite kodo aplikacije tako, da bo v eni poizvedbi z uporabo združitev ali stavkov IN pridobila več elementov, namesto da bi izvajala ločene poizvedbe v zanki.
  • Predpomnjenje rezultatov: Pogosto dostopan predpomnilnik, podatki v pomnilniku aplikacije se redko spreminjajo z ustreznimi časi poteka.
  • Vneto nalaganje: Konfigurirajte ORM-je za uporabo strategij hitrega nalaganja, ki pridobivajo povezane podatke v manjšem številu učinkovitejših poizvedb.
  • Parametrizacija poizvedbe: Zagotovite, da poizvedbe uporabljajo parametre namesto združevanja vrednosti, kar izboljša ponovno uporabo predpomnilnika načrta in zmanjša stroške prevajanja.

4.2 Preiskovanje težav z blokiranjem

Do blokiranja pride, ko ena seja zaklene, kar preprečuje nadaljevanje drugih sej. To se kaže kot počasen odzivni čas aplikacij in frustracije uporabnikov.

4.2.1 Prepoznavanje blokirnih verig

Za zaznavanje in analizo blokiranja:

  1. Odprite Nadzornik dejavnosti in razširite Procesi okno.
  2. Poiščite seje z vrednostmi v Blokirano s strani stolpec – ti čakajo na zaklepe, ki jih imajo druge seje.
  3. Poišči seje z '1' v Blokator glave stolpec – to so glavni vzrok za blokiranje verig.
  4. Upoštevajte ID seje blokerja glave.
  5. Z desno miškino tipko kliknite sejo blokatorja glave in izberite podrobnosti da vidim, kateri ukaz izvaja.

Razumevanje verige blokiranja je ključnega pomena. Blokator na začetku je seja, ki jo morate raziskati, ne pa blokirane seje v nadaljevanju.

4.2.2 Razumevanje vrst ključavnic

Naš Vrsta čakanja Stolpec v podoknu Procesi označuje, na katero vrsto zaklepanja čakajo blokirane seje:

  • LCK_M_X: Čakanje na izključno zaklepanje, ki ga običajno povzročijo operacije UPDATE, DELETE ali INSERT.
  • LCK_M_S: Čakanje na skupno zaklepanje, običajno stavki SELECT, ki čakajo na sprostitev izključnih zaklepov.
  • LCK_M_U: Čakanje na zaklepanje posodobitve, vmesna vrsta zaklepanja, ki se uporablja med posodobitvami.
  • LCK_M_IX: Čakanje na izključno zaklepanje namere, ki označuje spor o zaklepanju na ravni strani ali vrstice.

Naš Počakajte na vir Stolpec prikazuje, kateri objekt baze podatkov je zaklenjen, kar vam pomaga razumeti, katera tabela ali indeks je vključen v spor.

4.2.3 Reševanje težav z blokiranjem

Ko prepoznate blokirajočo sejo in kaj počne, imate več možnosti:

  1. Počakajte na dokončanje: Če bloker glave izvaja legitimno poizvedbo, ki se bo kmalu končala, je morda najbolje, da jo pustite, da se konča naravno.
  2. Ubij sejo: Če je blokator glave zataknjen ali izvaja poizvedbo, ki jo je treba preklicati:
    • V podoknu Procesi z desno tipko miške kliknite sejo.
    • Izberite Ubij proces.
    • V pogovornem oknu potrdite dejanje.
  3. Optimizirane poizvedbe: Če se blokiranje ponavlja pri istih poizvedbah, jih optimizirajte, da skrajšate trajanje zaklepanja.
  4. Prilagodite ravni izolacije: Razmislite o uporabi izolacije posnetkov branja (READ COMMITTED SNAPSHOT ISOLATION), da zmanjšate blokiranje pri delovnih obremenitvah z veliko branja.
  5. Nastavitev indeksa: Dodajte indekse, da pospešite poizvedbe in skrajšate čas, ki ga zadržujejo zaklepi.

4.3 Analiza visoke uporabe procesorja

Ko podokno Pregled dosledno prikazuje čas procesorja na ali blizu 100 %, morate ugotoviti, katere poizvedbe so odgovorne, in ugotoviti, ali jih je mogoče optimizirati.

4.3.1 Prepoznavanje poizvedb, ki intenzivno uporabljajo procesor

Če želite najti poizvedbe, ki porabljajo preveč procesorja:

  1. odprite Nedavne drage poizvedbe okno.
  2. Razvrsti po Procesor (ms/s) za prikaz poizvedb, ki porabijo največ časa procesorja.
  3. Preglejte najpogostejše poizvedbe na seznamu.
  4. Z desno miškino tipko kliknite poizvedbe, ki močno obremenjujejo procesor, in izberite Urejanje besedila poizvedbe za ogled stavka SQL.
  5. Izberite Prikaži načrt izvedbe da bi razumeli, kako se poizvedba izvaja.

Bodite pozorni ne le na porabo procesorja posameznih poizvedb, temveč tudi na Izvedb/min stolpec. Poizvedba, ki zmerno porabi CPE na izvedbo, vendar se izvaja tisočkrat na minuto, je lahko največji porabnik CPE.

4.3.2 Tehnike optimizacije poizvedb

Med pogoste načine za zmanjšanje porabe procesorja spadajo:

  • Dodajte manjkajoče indekse: Iskanje indeksov porabi veliko manj procesorja kot skeniranje tabel. V načrtih izvajanja poiščite manjkajoča priporočila za indekse.
  • Prepišite neučinkovite poizvedbe: Kazalce zamenjajte z operacijami, ki temeljijo na množicah, odpravite nepotrebne funkcije v stavkih WHERE in odstranite odvečne spoje.
  • Posodobi statistiko: Zastarela statistika povzroča SQL Server izbrati neučinkovite izvedbene načrte. Zaženite ukaz POSODOBITEV STATISTIKE na prizadetih tabelah.
  • Zmanjšajte količino podatkov: Za filtriranje podatkov prej dodajte klavzule WHERE, za oštevilčenje uporabite TOP ali OFFSET/FETCH in se izogibajte uporabi SELECT *.
  • Popravi vohanje parametrov: Če vohanje parametrov povzroča težave, uporabite OPTION (RECOMPILE), namige za poizvedbe ali vodnike za načrt.

4.4 Preiskovanje težav s spominom

Zaradi pritiska na pomnilnik lahko poizvedbe preidejo na disk, kar znatno zmanjša zmogljivost. Nadzornik aktivnosti vam pomaga prepoznati operacije, ki intenzivno uporabljajo pomnilnik.

4.4.1 Razumevanje metrik pomnilnika

Naš Uporaba pomnilnika V stolpcu v podoknu Procesi je prikazan pomnilnik, dodeljen posamezni seji, v kilobajtih. Visoka poraba pomnilnika v eni sami seji pogosto pomeni:

  • Velike operacije razvrščanja ali zgoščevanja, ki se niso mogle prilegati prvotno dodeljenemu pomnilniku
  • Poizvedbe, ki pridobivajo ogromne nabore rezultatov
  • Prekomerna vzporednost, ki ustvarja veliko kopij operatorjev načrta izvajanja
  • Puščanje pomnilnika v shranjenih procedurah ali funkcijah CLR

V podoknu Čakanje na vire se lahko prikažejo čakanja na pomnilnik, ko poizvedbe ne morejo pridobiti zadostnih pomnilniških dovoljenj in morajo počakati, da je pomnilnik na voljo.

4.4.2 Prepoznavanje poizvedb, ki intenzivno uporabljajo pomnilnik

Če želite najti poizvedbe, ki povzročajo pritisk na pomnilnik:

  1. v Procesi podokno, razvrsti po Uporaba pomnilnika da si ogledate seje, ki porabljajo največ pomnilnika.
  2. Z desno miškino tipko kliknite seje z veliko porabo pomnilnika in izberite podrobnosti da si ogledajo njihova povpraševanja.
  3. v Nedavne drage poizvedbe v podoknu poiščite poizvedbe z visoko Logično branje or Logični zapisi, saj so te pogosto povezane s porabo pomnilnika.
  4. Preučite načrte izvajanja za operatorje sortiranja in ujemanja zgoščevalnih vrednosti, ki uporabljajo pomnilniške dodelitve.

Poizvedbe, ki v načrtih izvajanja ali opozorilih o prelivanju prikazujejo opozorila »Dodelitev pomnilnika«, kažejo na težave s pritiski na pomnilnik.

4.5 Zaznavanje težav z delovanjem aplikacij

Ko uporabniki poročajo o počasnih odzivnih časih aplikacij, vam Activity Monitor pomaga ugotoviti, ali je ozko grlo baza podatkov.

4.5.1 Povezovanje monitorja aktivnosti s težavami aplikacije

Za preiskavo počasnosti aplikacije:

  1. Zabeležite si točen čas, ko uporabniki poročajo o težavah, in prizadete aplikacije.
  2. Odprite Nadzornik aktivnosti in preverite Pregled podokno za konice virov v tistem času.
  3. v Procesi podokno, filtriraj po uporaba da prikažete samo povezave iz prizadete aplikacije.
  4. Išči visoko Počakajte čas vrednosti, ki označujejo zamude v zbirki podatkov.
  5. Prijava Nedavne drage poizvedbe podokno za poizvedbe iz te aplikacije, ki porabljajo znatne vire.

Če baza podatkov ne kaže nenavadne aktivnosti, medtem ko uporabniki opazijo počasnost, je težava verjetno v kodi aplikacije, omrežni zakasnitvi ali delovanju na strani odjemalca.

4.5.2 Prepoznavanje neučinkovitih vzorcev uporabe

Monitor aktivnosti razkriva več protivzorcev v oblikovanju aplikacij:

  • Klepetujoče aplikacije: Veliko majhnih poizvedb namesto manjšega števila, ki so učinkovitejše. Prepoznano po velikem številu povezav in številnih preprostih poizvedbah v nedavnih dragih poizvedbah.
  • N+1 poizvedb: Ena poizvedba, ki ji sledi N dodatnih poizvedb za povezane podatke. Prikazano kot preprosta poizvedba z izjemno visokim številom izvedb na minuto.
  • Veliki nabori rezultatov: Aplikacije pridobivajo veliko več podatkov, kot jih je potrebno. Iščite visoko Logično branje v kombinaciji s preprostimi poizvedbami SELECT *.
  • Manjkajoče časovne omejitve: Aplikacije, ki ne nastavijo časovnih omejitev ukazov, lahko pustijo povezave odprte za nedoločen čas, kar je v podoknu Procesi vidno kot dolgotrajne seje.

5. Alternativne metode: Pridobivanje podatkov monitorja aktivnosti prek T-SQL

Čeprav Activity Monitor ponuja priročen grafični vmesnik, morate včasih enakovredne informacije pridobiti programsko ali ustvariti rešitve za spremljanje po meri.

5.1 Uporaba dinamičnih upravljalnih pogledov (DMV)

SQL Server razkriva informacije o dejavnosti prek dinamičnih pogledov upravljanja, ki jih Nadzornik dejavnosti poizveduje v ozadju.

5.1.1 Ključni DMV-ji za spremljanje dejavnosti

Najpomembnejši DMV-ji za podvajanje funkcionalnosti monitorja aktivnosti vključujejo:

  • sys.dm_exec_requests: Prikazuje trenutno izvajajoče se zahteve z informacijami o CPU, V/I in čakanju.
  • sys.dm_exec_sessions: Vsebuje informacije na ravni seje, kot so prijavno ime, ime gostitelja in ime programa.
  • sys.dm_os_wait_stats: Zagotavlja kumulativno statistiko čakanja za celoten primerek.
  • sys.dm_exec_query_stats: Vsebuje združene statistične podatke o učinkovitosti delovanja za predpomnjene poizvedbe.
  • sys.dm_io_virtual_file_stats: Vrne statistiko V/I za podatke in dnevniške datoteke.
  • sys.dm_exec_sql_text: Pridobi besedilo SQL za dani sql_handle ali plan_handle.
  • sys.dm_exec_query_plan: Vrne načrt izvedbe za predpomnjeno poizvedbo.

5.1.2 Vzorčne poizvedbe za informacije o procesu

Če želite podvojiti funkcionalnost podokna Procesi, lahko izvedete poizvedbo:

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 Vzorčne poizvedbe za statistiko čakanja

Če si želite ogledati statistiko čakanja, podobno kot v podoknu Čakanje virov:

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 Uporaba sp_WhoIsActive

sp_WhoIsActive je zmogljiva shranjena procedura, ki jo je ustvarila skupnost in v enem samem naboru rezultatov ponuja podrobnejše informacije kot Monitor aktivnosti.

5.2.1 Namestitev sp_WhoIsActive

Če želite namestiti sp_WhoIsActive:

  1. Prenesite najnovejšo različico iz http://whoisactive.com.
  2. Prenesena datoteka je SQL skripta, ki vsebuje definicijo procedure.
  3. Odprite skript v SQL Server Studio za upravljanje.
  4. Povežite se s svojim SQL Server na primer.
  5. Zaženite skript za ustvarjanje postopka v glavni bazi podatkov.
  6. Dodelite dovoljenja za izvajanje ustreznim uporabnikom.

Ker je sp_WhoIsActive nameščen v glavni zbirki podatkov, je dostopen iz katerega koli konteksta zbirke podatkov.

5.2.2 Osnovni primeri uporabe

Najenostavnejši način uporabe funkcije sp_WhoIsActive je:

EXEC sp_WhoIsActive;

To vrne nabor rezultatov, ki prikazuje vse aktivne seje z njihovimi poizvedbami, vrstami čakanja, informacijami o blokiranju in porabo virov.

Za 10-sekundni vzorec, ki prikazuje aktivnost v tem obdobju:

EXEC sp_WhoIsActive @delta_interval = 10;

To izračuna delte za metrike, kot sta CPU in branje, ter prikaže, kaj se je zgodilo v teh 10 sekundah.

5.2.3 Napredni parametri

sp_WhoIsActive podpira številne parametre za prilagajanje:

  • @filter: Filtrirajte rezultate glede na določene seje, baze podatkov ali prijave.
  • @vrsta_filtra: Določite, za kaj filter velja (seja, baza podatkov, prijava itd.).
  • @get_plans: V rezultate vključite načrte izvedbe (nastavite na 1).
  • @get_locks: Prikaži podrobne informacije o zaklepanju (nastavljeno na 1).
  • @get_transaction_info: Prikaži podrobnosti transakcije (nastavljeno na 1).
  • @vrstni_red: Rezultate razvrstite po različnih metrikah (CPU, branje, trajanje itd.).
  • @destination_table: Rezultate vstavite v tabelo za sledenje zgodovine.

Primer, ki prikazuje načrte, razvrščene po CPU-ju:

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

5.3 Uporaba sistemskih shranjenih procedur

SQL Server vključuje tradicionalne shranjene procedure za spremljanje dejavnosti, čeprav zagotavljajo manj informacij kot DMV-ji ali monitor dejavnosti.

5.3.1 sp_who in sp_who2

Procedura sp_who prikazuje osnovne informacije o seji:

EXEC sp_who;

Procedura sp_who2 ponuja nekoliko več podrobnosti:

EXEC sp_who2;

Oba postopka prikazujeta ID-je sej, prijavna imena, čas procesorja in informacije o blokiranju. Vendar jima manjka bogatih podrobnosti, ki so na voljo prek DMV-jev ali monitorja aktivnosti. Najbolj uporabna sta za hitre preglede, ko potrebujete minimalne informacije.

5.3.2 Drugi uporabni sistemski postopki

Dodatni sistemski postopki za spremljanje vključujejo:

  • sp_lock: Prikaže informacije o zaklepanju (zastarelo; namesto tega uporabite sys.dm_tran_locks).
  • sp_monitor: Prikaže statistiko o SQL Server dejavnosti.
  • pomoč_sp: Prikaže definicije objektov in metapodatke.
  • DBCC SQLPERF: Prikaže porabo prostora v dnevniku transakcij in statistiko čakanja.

5.4 Ustvarjanje skriptov za spremljanje po meri

Za okolja, ki zahtevajo specifično spremljanje, ki presega tisto, kar ponuja Activity Monitor, lahko z uporabo DMV-jev ustvarite rešitve po meri.

5.4.1 Celoten skript, enakovreden monitorju aktivnosti

Tukaj je obsežen skript, ki posnema večino funkcij programa Activity Monitor:

-- 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 Avtomatizacija spremljanja z opravili agenta SQL

Skripte za spremljanje po meri lahko načrtujete z uporabo SQL Server Zastopnik:

  1. Ustvarite tabelo za shranjevanje rezultatov spremljanja.
  2. Spremenite skript za spremljanje, da boste rezultate vstavili v to tabelo.
  3. In SQL Server Management Studio, razširitev SQL Server Agent v Raziskovalcu objektov.
  4. Z desno tipko miške kliknite Delovna mesta in izberite New Job.
  5. Konfigurirajte opravilo tako, da bo vaš skript za spremljanje izvajal v rednih intervalih.
  6. Nastavite opozorila ali poročila na podlagi zbranih podatkov.

Ta pristop omogoča sledenje zgodovine in analizo trendov, ki jih Activity Monitor ne ponuja.

6. Omejitve in premisleki glede spremljanja aktivnosti

Čeprav je Nadzornik aktivnosti dragocen, vam razumevanje njegovih omejitev pomaga, da ga ustrezno uporabljate in ga po potrebi dopolnite z drugimi orodji.

6.1 Razumevanje režijskih stroškov monitorja aktivnosti

Spremljalnik aktivnosti ni brezplačen – za zbiranje in prikazovanje informacij porablja strežniške vire. Razumevanje teh stroškov vam pomaga, da ga uporabljate odgovorno.

6.1.1 Vpliv na strežniške vire

Nadzornik aktivnosti ob vsaki osvežitvi zažene poizvedbe v sistemskih DMV-jih. Te poizvedbe porabljajo procesor, ustvarjajo logična branja in lahko za kratek čas zaklenejo sistemske tabele. Na zasedenih strežnikih lahko ta režijska obremenitev vpliva na zmogljivost.

Podokni Procesi in Nedavne drage poizvedbe sta še posebej dragi, saj morata skenirati potencialno velike DMV-je in predpomnjene tabele. Na strežnikih s tisoči predpomnjenih načrtov poizvedb lahko osvežitev Nedavnih dragih poizvedb traja nekaj sekund.

Microsoftova dokumentacija opozarja, da lahko intervali osveževanja, krajši od 10 sekund, opazno vplivajo na delovanje strežnika, zlasti na že naloženih sistemih.

6.1.2 Najboljše prakse za interval osveževanja

Izberite intervale osveževanja, ki ustrezajo vaši situaciji:

  • 1-5 sekund: Samo za takojšnje odpravljanje kritičnih težav na manj obremenjenih strežnikih. Ne puščajte programa Activity Monitor zagnanega v teh intervalih.
  • 10 sekund (privzeto): Razumno za večino scenarijev odpravljanja težav in splošno spremljanje.
  • 30-60 sekund: Boljša izbira za produkcijske strežnike pod veliko obremenitvijo ali pri daljšem spremljanju.
  • Samo ročno osvežitev: Za situacije, ko želite občasno preverjati trenutno stanje brez neprekinjenega anketiranja.

Vedno zaprite Nadzor aktivnosti, ko končate z raziskovanjem. Ne puščajte ga neprekinjeno delujočega, še posebej ne več primerkov različnih uporabnikov.

6.2 Težave z združevanjem tipov čakanja

Pristop programa Activity Monitor h kategorizaciji čakalnih stavk sicer poenostavlja pogled, vendar lahko prikrije pomembne diagnostične informacije.

6.2.1 Kako nadzornik aktivnosti združuje čakalne skupine

SQL Server Sledi stotinam različnih vrst čakanja, od katerih vsak označuje določen vir ali pogoj. Nadzornik aktivnosti jih združuje v širše kategorije, kot so »Zaklep medpomnilnika«, »Zaklepanje« in »Pomnilnik«.

Na primer, kategorija »Zapah medpomnilnika« vključuje PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX in več drugih specifičnih vrst čakanja. Čeprav so vse povezane z dostopom do strani, imajo različne vzroke in rešitve.

Microsoft ne dokumentira natančno, katere vrste čakanja se preslikajo v katere kategorije, zaradi česar je težko razumeti, kaj v resnici vidite.

6.2.2 Manjkajoče vrste čakanja

Nadzornik aktivnosti ne prikazuje vseh vrst čakanja. Predvsem pa pogosto izpusti čakanja CXPACKET, ki kažejo na vzporedno izvajanje poizvedb. Čakanja CXPACKET so pogosta in običajno niso problematična, vendar vam poznavanje njihove prisotnosti pomaga razumeti značilnosti delovne obremenitve.

Ko Activity Monitor kot najvišjo čakalno vrsto prikaže »Buffer Latch«, druga orodja pa kažejo, da prevladuje CXPACKET, je neskladje posledica logike filtriranja in združevanja v Activity Monitorju.

6.2.3 Zakaj so določene vrste čakanja pomembne

Poznavanje specifične vrste čakanja je pomembno za odpravljanje težav:

  • PAGELATCH_EX: Pogosto kaže na spor med tempdb in dodelitvenimi stranmi. Rešitev vključuje dodajanje več podatkovnih datotek tempdb.
  • PAGELATCH_SH: Lahko kaže na vroče strani v uporabniških tabelah. Rešitev vključuje particioniranje ali reorganizacijo indeksa.
  • ZAKLEP_STRANJ: Pogosto med posodobitvami. Lahko kaže na normalno delovanje in ne na težavo.

Nadzornik aktivnosti vse to združuje pod »Zaklep medpomnilnika«, kar otežuje diagnozo. Orodja, kot sta sp_WhoIsActive in poizvedbe DMV, prikazujejo specifične vrste čakanja.

6.3 Točnost in pravočasnost podatkov

Spremljalnik aktivnosti ponuja skoraj realni čas, vendar je »skoraj« ključna beseda. Razumevanje njegove metode zbiranja podatkov vam pomaga pravilno interpretirati rezultate.

6.3.1 Posnetek v primerjavi z neprekinjenim spremljanjem

Nadzornik aktivnosti prikazuje posnetke v določenem trenutku, posnete ob vsakem intervalu osveževanja. Dogodki, ki se zgodijo med posnetki, se ne zajamejo. Če se poizvedba izvaja 2 sekundi in osvežujete vsakih 10 sekund, jo boste morda videli enkrat ali pa sploh ne, odvisno od časa.

To pomeni, da je Activity Monitor odličen pri iskanju trajnih težav (blokiranje, ki traja nekaj minut, dosledno visoka obremenitev CPE-ja), vendar lahko spregleda prehodne težave (kratke zastoje, občasne skoke poizvedb).

6.3.2 Združevanje in vzorčenje

V podoknu Nedavne drage poizvedbe so prikazani podatki, združeni odkar so načrti poizvedb vneseni v predpomnilnik. Dve enaki poizvedbi z različnimi vrednostmi parametrov se prikažeta kot ena vrstica, če si delita načrt. To združevanje lahko prikrije težave s specifičnimi kombinacijami parametrov (težave z vohanjem parametrov).

V podoknu Čakanja virov se stopnje izračunajo s primerjavo posnetkov. Če se statistika čakanja med posnetki ponastavi (redko, vendar mogoče), so izračunane stopnje morda napačne.

6.4 Kdaj NE uporabljati monitorja aktivnosti

Spremljalnik aktivnosti ni primeren za vsak scenarij spremljanja. Prepoznajte, kdaj so alternativna orodja boljša izbira.

6.4.1 Zahteve glede zgodovinske analize

Nadzornik aktivnosti prikazuje samo trenutno ali nedavno aktivnost. Ne shranjuje zgodovinskih podatkov. Če morate analizirati trende v več dneh ali tednih, primerjati trenutno učinkovitost delovanja z izhodišči ali ustvariti poročila o vzorcih delovanja, Nadzornik aktivnosti ni zadosten.

Za zgodovinsko analizo uporabite SQL ServerVgrajena nadzorna plošča za učinkovitost delovanja, razširjeni dogodki s ciljnimi datotekami ali rešitve za spremljanje drugih ponudnikov.

6.4.2 Potrebe po podrobni statistiki čakanja

Ko potrebujete natančne podatke o vrsti čakanja za napredno nastavitev, združevanje in filtriranje v Nadzorniku aktivnosti nista ustrezna. Uporabite neposredno poizvedbe DMV ali sp_WhoIsActive.

Za celovito analizo statistike čakanja neposredno poizvedite sys.dm_os_wait_stats in ročno filtrirajte nenevarna čakanja.

6.4.3 Premisleki glede produkcijskega strežnika

Na produkcijskih strežnikih z veliko obremenitvijo je lahko obremenitev programa Activity Monitor problematična. Več skrbnikov baz podatkov ne bi smelo hkrati izvajati programa Activity Monitor na istem strežniku.

Za spremljanje produkcije razmislite o lahkih alternativah, kot so načrtovani posnetki DMV, shranjeni v nadzorni bazi podatkov, ali pa uporabite usmerjanje samo za branje za spremljanje sekundarnih replik v konfiguracijah Always On.

7. Najboljše prakse za uporabo monitorja aktivnosti

Upoštevanje najboljših praks zagotavlja, da boste iz programa Activity Monitor iztržili največ, hkrati pa zmanjšali negativne vplive na vaše strežnike.

7.1 Kdaj uporabiti nadzornik aktivnosti

Monitor aktivnosti se izkaže v posebnih scenarijih. Uporabite ga, ko so njegove prednosti skladne z vašimi potrebami.

7.1.1 Težave z delovanjem v realnem času

Spremljalnik aktivnosti je idealen, kadar imajo uporabniki trenutno težave in morate težavo takoj diagnosticirati. Pogled v realnem času vam pomaga videti, kaj se dogaja trenutno.

Ko prejmete klic, da je »aplikacija počasna«, bi moral biti eden prvih korakov odpiranje programa Activity Monitor. Tako lahko hitro ugotovite, ali je baza podatkov zasedena, blokirana ali nedejavna.

7.1.2 Preiskava upočasnitve aplikacije

Ko določena aplikacija preneha delovati, vam Nadzornik aktivnosti pomaga ugotoviti, ali so vzrok težave z zbirko podatkov. Filtrirajte podokno Procesi po imenu aplikacije, da vidite samo dejavnost zbirke podatkov te aplikacije.

Če aplikacija ne prikazuje aktivnosti baze podatkov, medtem ko uporabniki poročajo o težavah, je težava drugje v skladu. Če opazite obsežno blokiranje ali drage poizvedbe, ste našli krivca.

7.1.3 Hitri pregledi zdravja

Nadzornik aktivnosti ponuja odlično nadzorno ploščo za hitre preglede stanja med rutinskim upravljanjem. Odprite ga, si oglejte grafe pregleda in preverite, ali ni videti nič nenavadnega.

Ta bežen pregled traja le nekaj sekund in lahko odkrije težave, preden postanejo kritične. Naj bo del vaše dnevne rutine.

7.2 Optimalne nastavitve konfiguracije

Ustrezna konfiguracija Activity Monitorja izboljša tako njegovo uporabnost kot tudi porabo virov.

7.2.1 Priporočeni intervali osveževanja

Uskladite interval osveževanja z vašim namenom:

  • Aktivno odpravljanje težav: 10 sekund zagotavlja dobro odzivnost z razumnimi stroški.
  • Razširjeno spremljanje: 30–60 sekund zmanjša vpliv na strežnik med daljšimi obdobji opazovanja.
  • Diagnoza kritične težave: 5 sekund zagotavlja visoko stopnjo podrobnosti, ko šteje vsaka sekunda, vendar uporabite na kratko.
  • Redni zdravstveni pregledi: Ročno osveževanje (v intervalu 1 ure), ko ne gledate aktivno.

Ko končate, ne pozabite zapreti programa Activity Monitor. Če ga nastavite na dolg interval in ga pozabite, boste zapravili vire strežnika.

7.2.2 Strategije filtriranja

Uporabite filtre, da se osredotočite na ustrezne informacije in zmanjšate kognitivno obremenitev:

  • Filtriraj procese po Baze podatkov da si ogledate le aktivnost v določenih podatkovnih bazah.
  • filtriraj Login za sledenje dejavnosti določenega uporabnika.
  • filtriraj Stanje naloge = RUNNING za skrivanje nedejavnih sej.
  • filtriraj uporaba za izolacijo prometa od določenih programov.
  • Prikaži samo neprazne elemente v Blokirano s strani da vidite samo blokadne situacije.

7.2.3 Izbira in razvrščanje stolpcev

Razvijte sistematičen pristop k pregledovanju podatkov monitorja aktivnosti:

  1. Začnite s pregledom: Preverite grafe za očitne skoke ali anomalije.
  2. Preverite procese za blokiranje: Razvrsti po ID-ju seje in nato poišči vrednosti »Blokiral«.
  3. Čakalne dobe za pregled virov: Razvrsti po skupnem času čakanja, da prepoznaš ozka grla virov.
  4. Analizirajte drage poizvedbe: Razvrstite po različnih metrikah (CPU, izvedbe, branja), da poiščete različne vrste težav.
  5. Preverite s podoknom V/I: Preverite, ali so poizvedbe z veliko vhodno/izhodnimi operacijami povezane z visoko aktivnostjo diska.

7.3 Integracija z drugimi orodji

Spremljevalec aktivnosti deluje najbolje kot del širšega nabora orodij in ne kot samostojna rešitev.

7.3.1 Uporaba z SQL Server Profil

Spremljalnik aktivnosti in SQL Server Profilerja se dobro dopolnjujeta. Ko v Nadzorniku aktivnosti prepoznate problematično sejo, jo kliknite z desno miškino tipko in izberite Sledenje procesa v SQL Server Profil.

S tem se zažene Profiler s filtri, ki so že konfigurirani za zajemanje samo dejavnosti te seje. Vidite celotno zaporedje izvedenih stavkov, informacije o času in sporočila o napakah – podrobnosti, ki jih Nadzornik aktivnosti ne ponuja.

Če želite izvedeti več o tem SQL Server Zmogljivosti profilerja in napredne tehnike sledenja, glejte naše celovito SQL Server Vodnik za profilerje.

7.3.2 Dopolnjevanje z razširjenimi dogodki

Razširjeni dogodki ponujajo nizkoproračunsko in podrobno spremljanje, ki zajema informacije, ki jih Nadzornik aktivnosti spregleda. Ustvarite seje razširjenih dogodkov za sledenje določenim dogodkom, kot so zastoji, dolgotrajne poizvedbe ali prekomerno prevajanje.

Za takojšnjo preiskavo uporabite Nadzornik aktivnosti, za stalno spremljanje in zgodovinsko analizo pa Razširjene dogodke. Orodji obravnavata različne potrebe.

Če želite izvedeti več o tem SQL Server Razširjene zmogljivosti dogodkov in napredne tehnike spremljanja, glejte naše celovito SQL Server Razširjeni vodnik za dogodke.

7.3.3 Rešitve za spremljanje tretjih oseb

Komercialna orodja, kot so SolarWinds Database Performance Analyzer, Redgate SQL Monitor in Quest Spotlight, ponujajo funkcije, ki jih Activity Monitor nima: opozarjanje, spremljanje zgodovinskih trendov, načrtovanje zmogljivosti in avtomatizirana diagnostika.

Ta orodja so dragocen dodatek k Activity Monitorju in ne njegova zamenjava. Activity Monitor ostaja uporaben za hitre preglede in preiskave, tudi če so na voljo napredna orodja za spremljanje.

7.4 pogostih napak, ki se jim je treba izogibati

Razumevanje pogostih napak pri uporabi programa Activity Monitor vam pomaga, da ga uporabljate učinkoviteje.

7.4.1 Neprekinjeno delovanje monitorja aktivnosti

Najpogostejša napaka je odpiranje programa Activity Monitor in njegovo delovanje za nedoločen čas. To zapravlja vire strežnika in zagotavlja malo vrednosti, saj ne opazujete aktivno.

Zaprite Nadzor aktivnosti, ko ga ne uporabljate aktivno. Če potrebujete neprekinjeno spremljanje, namesto tega uvedite ustrezno rešitev za spremljanje z načrtovanim zbiranjem podatkov.

7.4.2 Pretirano zanašanje samo na monitor aktivnosti

Nadzornik aktivnosti ponuja en pogled na zdravje strežnika. Ne zanašajte se izključno nanj. Dopolnite ga z nadzornikom učinkovitosti delovanja sistema Windows za meritve na ravni operacijskega sistema, razširjenimi dogodki za podrobno sledenje in analizo načrta izvajanja za optimizacijo poizvedb.

Spremljalnik aktivnosti vam pomaga prepoznati težave, vendar njihovo reševanje pogosto zahteva dodatna orodja in globljo analizo.

Več o tem SQL Server monitor učinkovitosti v našem Popoln vodnik.

7.4.3 Ignoriranje zgodovinskih trendov

Nadzornik aktivnosti prikazuje trenutno stanje, vendar imajo težave z zmogljivostjo pogosto vzorce, vidne šele skozi čas. Izvedite zbiranje zgodovinskih podatkov, da lahko primerjate trenutne meritve z izhodišči in prepoznate trende.

Brez zgodovinskega konteksta morda ne boste prepoznali, da je današnja »normalna« poraba procesorja za 30 % višja od izhodiščne vrednosti prejšnjega meseca, kar kaže na postopno upadanje.

8. Odpravljanje težav z nadzornikom aktivnosti

Sam monitor aktivnosti včasih naleti na težave. Če veste, kako odpraviti te težave, se izognete frustracijam.

8.1 Monitor aktivnosti se ne odpre ali ne prikazuje podatkov

Če se Nadzornik aktivnosti odpre, vendar prikaže prazna podokna ali se sploh ne odpre, je lahko vzrok več dejavnikov.

8.1.1 Težave z dovoljenji

Najpogostejši vzrok težav z nadzornikom aktivnosti so nezadostna dovoljenja. Če želite preveriti in odpraviti težave:

  1. Preverite dovoljenja na ravni strežnika:
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. Če se ne vrne nobena vrstica, nimate dovoljenja VIEW SERVER STATE.
  3. Prosite skrbnika strežnika, da mu to odobri:
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. Po odobritvi dovoljenj zaprite in ponovno odprite Nadzor aktivnosti.

8.1.2 Težave z združljivostjo različic

Uporaba starejše različice SQL Server Management Studio za povezavo z novejšim SQL Server Različica lahko povzroči napake nadzornika aktivnosti. Orodje morda ne razume novih vrst čakanja ali stolpcev sistemskega pogleda.

Vedno uporabljajte različico SSMS, ki se ujema z vašo ali je novejša od nje. SQL Server različica. Microsoft ponuja najnovejši SSMS kot brezplačen prenos ločeno od SQL Server Sam.

8.1.3 Težave s požarnim zidom in omrežjem

Nadzornik aktivnosti zahteva povezavo z SQL Server primerek na standardnih vratih (privzeto 1433). Če se lahko povežete prek Raziskovalca objektov, vendar Nadzornik aktivnosti ne uspe, morda pravila požarnega zidu blokirajo določene povezave.

Preverite, ali lahko vaša stranka doseže SQL Server računalnik na vseh potrebnih vratih. Preverite požarni zid sistema Windows in vse omrežne požarne zidove med odjemalcem in strežnikom.

8.2 Trajno zaustavljeno spremljanje aktivnosti

Pogosta težava, zlasti v SQL Server 2019, se Nadzornik aktivnosti odpre v stanju zaustavljene mirovanja in noče nadaljevati.

8.2.1 Razumevanje stanja začasne zaustavitve

Ko se Nadzornik aktivnosti začasno ustavi, v vseh podoknih piše stanje »Začasno ustavljeno«, gumb za nadaljevanje pa morda ne bo deloval. Zaradi tega ne morete videti nobene aktivnosti strežnika.

Do začasne zaustavitve običajno pride zaradi težav z dovoljenji, omejitev oddaljene povezave ali napak v različici SSMS in ne zaradi namerne začasne zaustavitve.

8.2.2 Pogosti vzroki

Nadzornik aktivnosti lahko trajno preklopi v stanje začasne zaustavitve zaradi:

  • Manjka dovoljenje VIEW SERVER STATE na novejših podoknih, dodanih v zadnjem času SQL Server različice
  • Oddaljene povezave so onemogočene na SQL Server primer
  • Napake pri preverjanju pristnosti za določene sistemske poizvedbe
  • Napake v določenih različicah SSMS, zlasti od 18.0 do 18.3
  • Težave s povezljivostjo med odjemalcem in strežnikom

8.2.3 Koraki reševanja

Če želite odpraviti težave z začasno ustavljenim stanjem nadzornika aktivnosti:

  1. Posodobi SSMS: Prenesite in namestite najnovejši SQL Server Različica programa Management Studio z Microsoftovega spletnega mesta. Številne napake v stanju začasne zaustavitve so bile odpravljene v kasnejših izdajah.
  2. Preverite dovoljenja: Prepričajte se, da imate dovoljenji za ogled stanja strežnika in ogled katere koli definicije.
  3. Preverite oddaljene povezave: Preverite, ali je SQL Server primerek omogoča oddaljene povezave:
    EXEC sp_configure 'remote access';
    

    Če je vrednost 0, prosite skrbnika, da jo omogoči.

  4. Znova zaženite SSMS: Včasih preprosto zaprete vsa okna in znova zaženete SQL Server Management Studio rešuje težavo.
  5. Povežite se z overjanjem sistema Windows: Če uporabljate preverjanje pristnosti SQL, poskusite s preverjanjem pristnosti sistema Windows, saj včasih zaobide težave z začasno ustavitvijo, povezane z preverjanjem pristnosti.

8.3 Težave z zmogljivostjo pri uporabi nadzornika aktivnosti

Če se sam Activity Monitor upočasni ali povzroči zmanjšanje delovanja strežnika, je potrebna prilagoditev.

8.3.1 Zmanjšanje režijskih stroškov spremljanja

Za zmanjšanje vpliva programa Activity Monitor:

  1. Povečajte interval osveževanja na 30 sekund oziroma 1 minuto.
  2. Zaprite podokna, ki jih ne uporabljate aktivno, s klikom na gumb za strnitev.
  3. Ko so podokna strnjena, Nadzornik aktivnosti ne poizveduje po podatkih zanje.
  4. Izogibajte se hkratnemu izvajanju več primerkov programa Activity Monitor.
  5. Ko ne preiskujete težav aktivno, popolnoma zaprite Nadzor aktivnosti.

8.3.2 Alternativne metode lahkega spremljanja

Če je Nadzornik aktivnosti preveč potraten za vaše okolje, razmislite o alternativah:

  • Neposredno poizvedovanje v DMV: Napišite specifične poizvedbe T-SQL, ki pridobijo le tiste informacije, ki jih potrebujete.
  • Uporabite sp_WhoIsActive: Ta shranjena procedura je zelo optimizirana in ima običajno nižje stroške kot Activity Monitor.
  • Izvedite vzorčenje: Načrtujte opravila agenta SQL, ki redno zajemajo posnetke podatkov DMV in shranjujejo rezultate v tabelah za kasnejšo analizo.
  • Spremljanje sekundarnih replik: In Skupine razpoložljivosti Always On, zaženite Nadzornik aktivnosti na berljivi sekundarni platformi namesto na primarni.

8.4 Netočne ali manjkajoče informacije

Včasih Nadzornik aktivnosti prikazuje informacije, ki se zdijo napačne ali nepopolne.

8.4.1 Preverjanje podatkov z DMV-ji

Ko se rezultati nadzora aktivnosti zdijo sumljivi, jih preverite tako, da neposredno poizvedujete v osnovnih DMV-jih. Če na primer podokno Procesi ne prikazuje blokad, vendar uporabniki poročajo o njih, poizvedite:

SELECT 
    blocking_session_id,
    session_id,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;

Če ta poizvedba prikaže blokado, ki jo je Nadzornik aktivnosti spregledal, ste potrdili težavo s prikazom.

8.4.2 Razumevanje časa osveževanja podatkov

Ne pozabite, da Nadzornik aktivnosti prikazuje posnetke. Poizvedba, ki se je izvajala med intervali osveževanja, se ne bo prikazala v Nedavnih dragih poizvedbah, razen če njen načrt izvajanja ostane v predpomnilniku.

Podobno statistika čakanja v podoknu Čakanje virov odraža kopičenje od zadnjega posnetka. Hitro spreminjajoče se delovne obremenitve lahko pri vsaki osvežitvi prikazujejo različne vzorce.

9. Napredne tehnike spremljanja aktivnosti

Izkušeni skrbniki baz podatkov uporabljajo Activity Monitor na sofisticirane načine za doseganje maksimalne diagnostične vrednosti.

9.1 Združevanje več podoken za analizo temeljnega vzroka

Prava moč Nadzornika aktivnosti se pokaže, ko povežete informacije iz več podoknov, da bi razumeli kompleksne težave z zmogljivostjo.

9.1.1 Povezovanje čakalnih dob s procesi

Ko podokno Čakanje na vire prikazuje dolge čakalne čase v kategoriji, uporabite podokno Procesi, da ugotovite, v katerih sejah prihaja do teh čakanj:

  1. Bodite pozorni na kategorijo čakanja z visokim kumulativnim časom čakanja (npr. »Zaklenjeno«).
  2. Preklopite na podokno Procesi.
  3. Razvrsti po Vrsta čakanja za združevanje sej glede na trenutno čakalno dobo.
  4. Poiščite seje, ki prikazujejo vrste čakanja v problematični kategoriji.
  5. Za te seje preglejte Počakajte na vir stolpec, da vidite, kateri objekti baze podatkov so vključeni.
  6. Z desno tipko miške kliknite in izberite podrobnosti , da si ogledate besedilo poizvedbe.

Ta korelacija vam pomaga preiti iz »imamo čakanja na zaklepanje« na »ta specifična poizvedba čaka na zaklepanje v tej tabeli«.

9.1.2 Povezovanje dragih poizvedb s težavami V/I

Ko podokno V/I podatkovnih datotek prikazuje visoko aktivnost diska v določeni zbirki podatkov:

  1. Upoštevajte, katere datoteke zbirke podatkov imajo visoke hitrosti branja ali pisanja v MB/s.
  2. Preklopi na Nedavne drage poizvedbe.
  3. Razvrsti po Fizičnih branj/s za prepoznavanje poizvedb, ki veliko berejo z diska.
  4. Filtrirajte ali vizualno prepoznajte poizvedbe, ki se izvajajo v zbirki podatkov z veliko vhodno/izhodnimi operacijami.
  5. Preglejte načrte izvajanja teh poizvedb za pregledovanje tabel ali manjkajoče indekse, ki povzročajo prekomerno vhodno/izhodno delovanje.

Ta večdelna analiza povezuje simptome (visok obseg V/I diska) z vzroki (specifične neučinkovite poizvedbe).

9.2 Uporaba monitorja aktivnosti za načrtovanje zmogljivosti

Čeprav Activity Monitor ne shranjuje zgodovinskih podatkov, ga lahko strateško uporabite za opazovanja načrtovanja zmogljivosti.

9.2.1 Prepoznavanje vzorcev konične uporabe

Spremljajte aktivnost strežnika ob različnih urah dneva, da prepoznate vzorce uporabe:

  1. Odprite Nadzor aktivnosti med znanimi delovnimi časi z največjo obremenitvijo.
  2. Bodite pozorni na najvišje vrednosti grafa % časa procesorja.
  3. Zabeležite največje število čakajočih opravil.
  4. Opazujte število paketnih zahtev/s v času konic.
  5. V podoknu Procesi dokumentirajte najbolj obremenjene baze podatkov.
  6. Za primerjavo ponovite izven prometnih konic.

Če čas procesorja v času največje obremenitve stalno presega 80 %, se približujete omejitvam zmogljivosti procesorja. Podobno naraščajoče število čakalnih dob kaže na naraščajoče tekmovanje za vire.

9.2.2 Analiza trendov virov

Čeprav Nadzornik aktivnosti prikazuje trenutno stanje, ga lahko uporabite tudi za naključno preverjanje trendov z beleženjem ključnih meritev skozi čas:

  • Vsak dan ob istem času naredite posnetke zaslona podokna Pregled
  • Zapišite najvišje vrednosti iz vsakega grafa
  • Primerjajte teden za tednom, da ugotovite trende rasti
  • Bodite pozorni na postopno povečanje povprečnega časa procesorja ali hitrosti V/I

To ročno spremljanje trendov dopolnjuje bolj sofisticirane rešitve za spremljanje in pomaga upravičiti širitev zmogljivosti.

9.3 Dokumentiranje izhodišč uspešnosti

Določitev osnovnih metrik uspešnosti vam pomaga prepoznati, kdaj se uspešnost poslabša.

9.3.1 Zajemanje osnovnih metrik

V obdobjih znanega dobrega delovanja dokumentirajte meritve monitorja aktivnosti:

  1. Odprite Nadzor aktivnosti med običajnim poslovnim delovanjem (ne med konicami ali izven njih).
  2. Vrednosti podokna Pregled zapisa:
    • Tipični razpon % časa procesorja
    • Povprečno število čakalnih opravil
    • Normalna hitrost V/I baze podatkov
    • Tipične zahteve za pakete/s
  3. Opomba Kategorije podokna Čakanja na vire, ki prikazujejo najdaljši čas čakanja.
  4. Število aktivnih procesov običajno dokumentirajte v podoknu Procesi.
  5. Zabeležite reprezentativne metrike izvajanja poizvedb iz Nedavnih dragih poizvedb.

To osnovno dokumentacijo shranite za poznejšo uporabo pri preiskovanju težav z zmogljivostjo.

9.3.2 Primerjava trenutne in osnovne zmogljivosti

Ko se pojavijo težave z zmogljivostjo, primerjajte trenutne odčitke monitorja aktivnosti z dokumentiranimi osnovnimi vrednostmi:

  • Ali je procesorski čas bistveno višji od osnovnega? Osredotočite se na poizvedbe, ki intenzivno uporabljajo procesor.
  • Ali so čakalne naloge 2-3x večje od izhodiščne ravni? Preučite čakanje virov.
  • Ali je V/I bistveno višji? Preverite podokno V/I podatkovne datoteke in drage poizvedbe.
  • Ali so paketne zahteve v času prometnih konic manjše od osnovnih? Poiščite morebitne blokade ali težave s povezljivostjo.

Ta primerjava vam pomaga ugotoviti, kaj se je spremenilo, in ustrezno usmeriti prizadevanja za odpravljanje težav.

9.4 Ustvarjanje prilagojenih delovnih procesov spremljanja

Razviti sistematične poteke dela za pogoste preiskovalne scenarije, da se zagotovi temeljita in ponovljiva analiza.

9.4.1 Postopek preiskave korak za korakom

Ko uporabniki poročajo o težavah z delovanjem, sledite doslednemu poteku dela:

  1. Hiter pregled zdravja: Odprite Nadzornik aktivnosti in preglejte grafe podokna Pregled za očitne nepravilnosti.
  2. Preverite blokado: Razširite podokno Procesi in v stolpcu Blokiral filtrirajte za Neprazne elemente.
  3. Prepoznajte spore o virih: Podokno »Pregled čakalnih dob virov« je razvrščeno po času čakanja.
  4. Poiščite drage poizvedbe: Preglejte nedavne drage poizvedbe, razvrščene po CPU-ju, nato po izvedbah in nato po branjih.
  5. Korelacija vzorcev V/I: Navzkrižno sklicevanje na drage poizvedbe z dejavnostjo podokna V/I podatkovne datoteke.
  6. Ugotovitve dokumentov: Naredite posnetke zaslona in zabeležite ustrezne ID-je sej, vrste čakanja in podrobnosti poizvedb.
  7. Globok potop: Za podrobno preiskavo ugotovljenih težav uporabite sledi Profilerja, analizo načrta izvedbe in poizvedbe DMV.

9.4.2 Merila za eskalacijo

Določite merila za to, kdaj je treba težave eskalirati oziroma kdaj nadaljevati preiskavo:

  • Takojšnje stopnjevanje: Verige blokiranja trajajo več kot 5 minut, procesorski čas je bil 100 % obremenjen več kot 2 minuti, kritični sistemski procesi pa so v stanju ZAČASNEGA UPORABE.
  • Nadaljujte z analizo: Ponavljajoče se drage poizvedbe, ki porabljajo >50 % CPU-ja, dosledno visoki odzivni časi V/I >50 ms, večkratno neuspešno dodeljevanje pomnilnika.
  • Raziščite še naprej: Začasna čakanja, ki se razrešijo v nekaj minutah, poizvedbe z neoptimalnimi načrti, vendar z sprejemljivo zmogljivostjo, manjše blokade, ki trajajo <30 sekund.

10. Spremljalnik aktivnosti v različnih SQL Server različice

Monitor aktivnosti se je razvil skozi SQL Server različice, pri čemer vsaka izdaja prinaša izboljšave in občasno tudi nove težave.

10.1 Monitor aktivnosti v SQL Server 2008 in novejše

SQL Server Leta 2008 je bila predstavljena sodobna zasnova monitorja aktivnosti, ki ostaja večinoma nespremenjena še danes.

10.1.1 Nove funkcije, predstavljene v SQL Server 2008

Naš SQL Server Prenova monitorja aktivnosti iz leta 2008 je prinesla znatne izboljšave:

  • Grafična nadzorna plošča z grafikoni v realnem času v podoknu Pregled
  • Razširljiv/zložljiv vmesnik podokna, ki nadomešča stari pogled samo z mrežo
  • Podokno Nedavne drage poizvedbe, ki prikazuje združene podatke o učinkovitosti delovanja poizvedb
  • Podokno V/I podatkovnih datotek za spremljanje aktivnosti diska za vsako datoteko posebej
  • Izboljšano podokno Čakanja na vire s kategorizacijo čakanja
  • Kontekstni meniji z desno miškino tipko za dejanja procesa, kot sta ukinjanje sej in zagon Profilerja
  • Nastavljivi intervali osveževanja od 1 sekunde do 1 ure

Te spremembe so Monitor aktivnosti preoblikovale iz preprostega seznama procesov v celovito nadzorno ploščo za spremljanje.

10.1.2 Spremembe od SQL Server 2005

SQL Server Monitor aktivnosti iz leta 2005 je bil veliko bolj omejen:

  • Dostopno prek mape Upravljanje v Raziskovalcu objektov namesto prek orodne vrstice
  • Ena mreža, ki prikazuje seznam procesov z osnovnimi informacijami
  • Brez grafičnih grafikonov ali več podoknov
  • Brez dragih poizvedb ali spremljanja V/I
  • Omejene statistike čakanja

Prenova leta 2008 je predstavljala popolno prenovo in ne postopno izboljšavo.

10.2 Monitor aktivnosti v SQL Server 2014/2016

SQL Server V letih 2014 in 2016 je bilo uveljavljenih postopnih izboljšav osnovnega zbiranja podatkov v programu Activity Monitor, vendar le malo vizualnih sprememb.

10.2.1 Izboljšave in dopolnitve

Ključne izboljšave v teh različicah so vključevale:

  • Boljša zmogljivost pri spremljanju strežnikov s tisoči predpomnjenih načrtov
  • Izboljšane možnosti filtriranja v podoknu Procesi
  • Izboljšana natančnost združevanja statistike čakanja
  • Boljše upravljanje razvrščanja in filtriranja stolpcev pri velikih naborih rezultatov
  • Učinkovitejše poizvedbe DMV zmanjšujejo stroške spremljanja

Osrednji vmesnik je ostal skladen z SQL Server 2008, ohranjanje poznavanja za administratorje.

10.3 Monitor aktivnosti v SQL Server 2019/2022

Nedavne Blog Objave SQL Server Različice nadaljujejo razvoj programa Activity Monitor s poudarkom na zmogljivosti in stabilnosti.

10.3.1 Najnovejše funkcije in zmogljivosti

SQL Server Spremljalnik aktivnosti za leti 2019 in 2022 vključuje:

  • Podpora za nove vrste čakanja, uvedene v teh različicah
  • Izboljšana zmogljivost upodabljanja v SSMS z uporabo tehnologije WPF
  • Boljše obvladovanje velikega števila aktivnih sej
  • Izboljšana združljivost s platformami SQL v oblaku
  • Natančnejše meritve CPU in V/I

10.3.2 Znane težave v novejših različicah

SQL Server Leta 2019 je bilo uvedenih več napak v programu Activity Monitor:

  • Stanje trajne zaustavitve: Nadzornik dejavnosti pogosto preklopi v stanje začasne zaustavitve in se ne nadaljuje, zlasti v SSMS 18.0–18.3. Odpravljeno v novejših različicah SSMS.
  • Napake oddaljene povezave: Nekatere konfiguracije preprečujejo odpiranje programa Activity Monitor na oddaljenih instancah. Rešitve vključujejo omogočanje določenih zastavic sledenja ali uporabo novejših graditev SSMS.
  • Težave z dovoljenji: Novi sistemski pogledi zahtevajo dodatna dovoljenja, ki niso jasno dokumentirana, kar povzroča prazne zaslone tudi pri VIEW SERVER STATE.

Pri delu z vedno uporabljajte najnovejšo različico sistema SSMS. SQL Server 2019 in 2022, da bi se izognili tem težavam.

11. Praktični primeri uporabe in zgledi

Primeri iz resničnega sveta prikazujejo, kako učinkovito uporabiti nadzornik aktivnosti v pogostih scenarijih odpravljanja težav.

11.1 Študija primera: Diagnosticiranje počasne spletne aplikacije

Razvojna ekipa poroča, da je njihova spletna aplikacija postala nesprejemljivo počasna, saj se strani nalagajo v 20–30 sekundah namesto običajnih 2–3 sekund.

11.1.1 Začetna preiskava s podoknom za pregled

Odprite Nadzornik aktivnosti in preglejte podokno Pregled:

  1. Graf % časa procesorja prikazuje 85–95 % izkoriščenost procesorja, kar je bistveno več od običajne osnovne vrednosti 30–40 %.
  2. Število čakajočih nalog niha med 10 in 20 nalogami, v primerjavi z običajnim izhodiščem od 0 do 3.
  3. Vhodno/izhodna dejavnost baze podatkov kaže zmerno aktivnost okoli 50 MB/s.
  4. Število paketnih zahtevkov/sekundo je nižje od pričakovanega, in sicer 100/sekundo, v primerjavi s tipičnimi 300–400/sekundo med delovnim časom.

Ta vzorec kaže na ozko grlo procesorja s pretepanjem virov, kar povzroča zmanjšano prepustnost. Strežnik deluje močno, vendar ne obdeluje veliko zahtev.

11.1.2 Prepoznavanje problematične poizvedbe

Razširite podokno Nedavne drage poizvedbe in razvrstite po Izvedbe/min:

  1. Najpogostejša poizvedba prikazuje 15,000 izvedb na minuto.
  2. Z desno tipko miške kliknite in izberite Urejanje besedila poizvedbe da preuči poizvedbo.
  3. Poizvedba je preprost stavek SELECT, ki pridobi en sam uporabniški zapis: SELECT * FROM Users WHERE UserId = @UserId.
  4. Ta poizvedba se pri običajni uporabi aplikacije ne sme izvesti 15,000-krat na minuto.

Z desno tipko miške kliknite poizvedbo in izberite Prikaži načrt izvedbeNačrt prikazuje pregled tabele Uporabniki z opozorilom o manjkajočem indeksu v stolpcu UserId.

Filtrirajte podokno Procesi po aplikaciji, da prikažete samo povezave spletne aplikacije. Več sej prikazuje, da se ista poizvedba izvaja večkrat.

11.1.3 Reševanje in preverjanje

Težava izhaja iz dveh dejavnikov: prekomernega števila izvajanj poizvedb in manjkajočega indeksa. Koraki za rešitev:

  1. Ustvarite manjkajoči indeks:
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. Obrnite se na razvojno ekipo glede prekomernega števila izvedb. Preiskava razkriva problem poizvedbe N+1 v kodi aplikacije, kjer zanka pridobi podatke o uporabniku za vsak element na seznamu.
  3. Spremenite aplikacijo združiti uporabniške iskanja v eno samo poizvedbo z uporabo stavka IN ali parametra s tabelarno vrednostjo.
  4. Preverite popravek s spremljanjem programa Activity Monitor po uvedbi. Poraba procesorja se zmanjša na 35–40 %, število izvedb na minuto se zmanjša na 200–300, odzivni časi aplikacij pa se vrnejo v normalno stanje.

11.2 Študija primera: Reševanje težave z blokiranjem

Uporabniki poročajo, da se sistem za vnos naročil občasno zamrzne za 30–60 sekund, preden se nadaljuje z normalnim delovanjem.

11.2.1 Zaznavanje blokirne verige

Med enim od teh zamrznitev odprite Nadzornik dejavnosti in razširite podokno Procesi:

  1. Razvrsti po ID seje da si ogledate vse organizirane seje.
  2. Več sej prikazuje vrednosti v Blokirano s strani stolpec, ki vsi kažejo na ID seje 73.
  3. Seja 73 prikazuje '1' v Blokator glave stolpec, kar potrjuje, da je to glavni vzrok.
  4. Naš Vrsta čakanja Za blokirane seje prikazuje LCK_M_X, kar pomeni, da čakajo na izključne zaklepe.
  5. Naš Počakajte na vir V stolpcu je razvidno, da je blokada v tabeli Naročila.

11.2.2 Analiza vzroka

Z desno tipko miške kliknite Seja 73 in izberite podrobnosti za ogled ukaza:

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

Ta posodobitev je del paketne obdelave, ki se izvaja vsako uro. Preverjanje Login Stolpec potrjuje, da seja pripada računu storitve paketne obdelave.

Poizvedba zaklepa tabelo Naročila med obdelavo tisočih naročil. Počakajte čas za blokirane seje se enakomerno povečuje, kar potrjuje, da je težava v tej dolgotrajni operaciji.

11.2.3 Izvajanje popravka

Kratkoročna rešitev:

  1. Podrobnosti o seji dokumentiranja 73, vključno z besedilom poizvedbe in trajanjem.
  2. Pustite, da se posodobitev dokonča naravno, saj gre za legitimno paketno obdelavo.
  3. Po zaključku preverite, ali so blokirane seje odstranjene in ali se nadaljuje normalno delovanje.

Dolgoročne rešitve, ki so bile izvedene:

  1. Prerazporedi paketno opravilo delovati izven prometnih konic (od 2. do 4. ure zjutraj namesto med delovnim časom).
  2. Spremenite paketno obdelavo za posodabljanje naročil v manjših serijah po 100 zapisov hkrati in sproščanje zaklepov med serijami.
  3. Dodajte indeks v stolpcu OrderId, da pospešite postopek posodabljanja.
  4. Razmislite o izolaciji SNAPSHOT za bralne operacije za zmanjšanje vpliva blokiranja.

11.3 Študija primera: Prepoznavanje prekomernih izvedb poizvedb

Spremljanje baze podatkov kaže, da se je poraba procesorja v zadnjem mesecu postopoma povečevala, vendar v kodi aplikacije ni prišlo do očitnih sprememb.

11.3.1 Odkrivanje nenormalnega števila izvedb

Odprite Nadzornik dejavnosti in preglejte podokno Nedavne drage poizvedbe:

  1. Razvrsti po Izvedb/min za ogled najpogosteje izvedenih poizvedb.
  2. Najpogostejša poizvedba kaže 37,000 izvedb na minuto – veliko več kot katera koli druga poizvedba.
  3. Z desno tipko miške kliknite in izberite Urejanje besedila poizvedbe.
  4. Poizvedba pridobi podatke o kategoriji izdelka:
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. Ta preprosta poizvedba bi morala biti hitra in jo je mogoče shraniti v predpomnilnik, vendar se izvaja več deset tisočkrat na minuto.

11.3.2 Sledenje do kode aplikacije

V podoknu Procesi poiščite seje, ki izvajajo to poizvedbo:

  1. Upoštevajte uporaba V stolpcu je prikazana »Storitev kataloga izdelkov«.
  2. Z desno miškino tipko kliknite eno od teh sej in izberite Sledenje procesa v SQL Server Profil.
  3. SQL Profiler razkrije, da se poizvedba izvaja večkrat v hitrem zaporedju z različnimi vrednostmi CategoryId.
  4. Za pregled kode se obrnite na razvojno ekipo, ki upravlja ProductCatalogService.

Pregled kode razkriva težavo: nedavna sprememba pridobi sezname izdelkov s kategorijami. Za vsak izdelek v naboru rezultatov (pogosto več kot 1,000 izdelkov) koda izvede ločen klic baze podatkov za pridobitev informacij o kategoriji – klasičen problem poizvedbe N+1.

11.3.3 Optimizacija aplikacije

Izvedite ustrezno popravilo:

  1. Spremenite poizvedbo aplikacije za uporabo JOIN-a za pridobivanje izdelkov in njihovih kategorij v enem samem klicu baze podatkov:
    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. Uvedite posodobljeno kodo in spremljajte Nadzor aktivnosti.
  3. Preverite popravek: Število izvedb na minuto za poizvedbo kategorije se zmanjša s 37,000 na manj kot 100, skupna poraba procesorja pa se zmanjša za 40 %.
  4. Dokumentirajte pridobljeno lekcijo in delite z razvojno ekipo, da preprečite podobne težave pri prihodnjih spremembah kode.

12. Odkrijte morebitno poškodbo baze podatkov

Čeprav Nadzornik aktivnosti ni zasnovan posebej za zaznavanje poškodb baze podatkov, lahko nekateri vzorci v njegovem prikazu kažejo na osnovne težave s poškodbami, ki zahtevajo nadaljnjo preiskavo.

12.1 Simptomi morebitne poškodbe baze podatkov

Če je prisotna poškodba baze podatkov in se do nje dostopa, se lahko občasno prikaže:

1. V podoknu Procesi:

  • Seje so obtičale v stanju SUSPENDED z nenavadnimi vrstami čakanja
  • Procesi, ki prikazujejo stanja napak
  • Poizvedbe, ki večkrat ne uspejo

2. V podoknu Čakanje na vire:

  • Nenavadne vrste čakanja, povezane z V/I, ki lahko kažejo na težave z diskom (čeprav to bolj verjetno kaže na težave s strojno opremo kot na logično poškodbo)

3. V Nedavnih dragih poizvedbah:

  • Poizvedbe z nenavadno visokim številom fizičnih branj, če večkrat poskušajo prebrati poškodovane strani

12.2 Nadaljnje preverjanje z DBCC CHECKDB

Ko Nadzornik aktivnosti prikaže simptome, ki kažejo na morebitno poškodbo, morate takoj zagnati DBCC CHECKDB, da preverite integriteto baze podatkov. Ta ukaz pregleda vse strani baze podatkov, preveri kontrolne vsote in morebitne napake logične skladnosti.

Če želite izvedeti več o uporabi ukaza DBCC CHECKDB za preverjanje in odpravljanje poškodb baze podatkov, si oglejte našo obsežen vodnik za DBCC CHECKDB.

12.3 Popravilo s profesionalnim orodjem

Če DBCC CHECKDB potrdi poškodbo baze podatkov, imate na voljo več možnosti za popravilo:

13. Zaključek

SQL Server Nadzornik aktivnosti je neprecenljivo orodje za skrbnike baz podatkov, saj zagotavlja takojšen vpogled v delovanje strežnika in pomaga hitro in učinkovito diagnosticirati težave.

13.1 Povzetek ključnih točk

V tem priročniku smo raziskali, kako vam Nadzornik aktivnosti pomaga razumeti in odpravljati težave SQL Server izvedba:

  • Nadzornik aktivnosti omogoča vpogled v procese, čakanja, poizvedbe in V/I v realnem času prek organiziranega grafičnega vmesnika.
  • Pet podoken – Pregled, Procesi, Čakanje na vire, V/I podatkovnih datotek in Nedavne drage poizvedbe – ponuja edinstven pogled na dejavnost strežnika.
  • Pogosti scenariji odpravljanja težav, kot so prekomerno izvajanje poizvedb, verige blokiranja in visoka poraba procesorja, postanejo obvladljivi s sistematičnim preiskovanjem programa Activity Monitor.
  • Čeprav je zmogljiv, ima Activity Monitor omejitve, vključno s pomanjkanjem zgodovinskih podatkov, združevanjem vrst čakanja in stroški spremljanja, ki vplivajo na njegovo uporabnost.
  • Dopolnitev nadzornika aktivnosti s poizvedbami DMV, sp_WhoIsActive, razširjenimi dogodki in morebitnimi orodji tretjih oseb ustvarja celovito strategijo spremljanja.
  • Z upoštevanjem najboljših praks za intervale osveževanja, zapiranjem nadzornika aktivnosti, ko ga ne uporabljate, in združevanjem več podoken za korelacijo povečate njegovo vrednost in hkrati zmanjšate vpliv.

13.2 Spremljalnik aktivnosti kot del vašega kompleta orodij

Nadzornik aktivnosti naj bi služil kot vaše prvo orodje za odzivanje pri preiskavah delovanja, ne pa kot edino orodje. Njegova moč je v zagotavljanju takojšnje preglednosti med aktivnim odpravljanjem težav, kar vam pomaga hitro ugotoviti, ali je baza podatkov ozko grlo, in prepoznati, kateri specifični vidiki potrebujejo podrobnejšo preiskavo.

Predstavljajte si nadzor aktivnosti kot analog armaturne plošče v vašem avtomobilu – takoj vam pove, če je kaj narobe, in vam pomaga prepoznati splošno področje težav. Tako kot vam armaturna plošča vašega avtomobila ne pove natančno, zakaj je zasvetila lučka za preverjanje motorja, vas nadzor aktivnosti opozori na težave, ne da bi vedno razkril njihov celoten vzrok. Ta globlja analiza zahteva dodatna orodja in strokovno znanje.

Integrirajte Activity Monitor v širši nabor orodij, ki vključuje analizo načrta izvedbe, sledenje statistike čakanja, rešitve za spremljanje zgodovine in najboljše prakse za učinkovitost delovanja. Uporabljajte ga skupaj z ustreznimi strategijami indeksiranja, tehnikami optimizacije poizvedb in načrtovanjem zmogljivosti.

13.3 Nadaljevanje vaše učne poti

Obvladovanje programa Activity Monitor je le en korak do tega, da postanete učinkovit skrbnik baz podatkov. Nadaljujte z izpopolnjevanjem svojih veščin tako, da:

  • Učenje interpretacije izvedbenih načrtov in prepoznavanje neučinkovitih operacij
  • Razumevanje SQL Server Statistika čakanja in njeni vplivi
  • Študij tehnik oblikovanja in optimizacije indeksov
  • Raziskovati SQL ServerArhitektura in kako obdeluje poizvedbe
  • Uporaba sistematičnih metodologij za odpravljanje težav
  • Izkušnje z razširjenimi dogodki za podrobno sledenje
  • Razumevanje ravni izolacije transakcij in njihovega vpliva na učinkovitost delovanja

Vsaka preiskava delovanja z orodjem Activity Monitor vas nauči nekaj novega o tem, kako SQL Server deluje in kako aplikacije komunicirajo z bazami podatkov. Dokumentirajte svoje ugotovitve, delite znanje s sodelavci in zgradite knjižnico rešitev za pogoste težave.

13.4 Dodatni viri

Razširite svoje znanje s temi dragocenimi viri:

14. Pogosto zastavljena vprašanja (FAQ)

V: Kaj je SQL Server ActivityMonitor?

A: SQL Server Spremljalnik aktivnosti je vgrajeno orodje v SQL Server Management Studio, ki prikazuje informacije o procesih, ki se izvajajo v realnem času. SQL Server instanco in njihov vpliv na strežniške vire. Zagotavlja grafično nadzorno ploščo s petimi podokni, ki prikazujejo različne vidike dejavnosti strežnika, vključno z porabo procesorja, čakajočimi nalogami, hitrostmi V/I, aktivnimi sejami in dragimi poizvedbami.

V: Kako odprem nadzornik aktivnosti v SSMS?

A: Nadzor aktivnosti lahko odprete na štiri načine: (1) Kliknite ikono Nadzor aktivnosti v orodni vrstici SSMS, (2) Z desno tipko miške kliknite SQL Server ime primerka v Raziskovalcu objektov in izberite Monitor dejavnost, (3) Pritisnite Ctrl + druga + Aali (4) Konfigurirajte SSMS, da se samodejno zažene prek Orodja -> možnosti -> Okolje -> Zagon.

V: Katera dovoljenja potrebujem za uporabo programa Activity Monitor?

O: Potrebujete OGLEJ STANJE STREŽNIKA dovoljenje za ogled večine informacij o nadzorniku dejavnosti. Za podokno V/I podatkovne datoteke potrebujete tudi Ustvari bazo podatkov, SPREMENI POLJUBNO ZBIRKO PODATKOVali OGLEJTE SI POLJUBNO DEFINICIJO dovoljenja. Brez teh dovoljenj se lahko Nadzornik dejavnosti odpre, vendar prikaže prazna podokna.

V: Zakaj je moj monitor aktivnosti zaustavljen ali ne deluje?

A: Nadzornik dejavnosti se običajno začasno ustavi zaradi težav z dovoljenji, zastarelih različic SSMS ali onemogočenih oddaljenih povezav. Če želite odpraviti težavo: (1) Posodobite na najnovejšo različico SSMS, (2) Preverite, ali imate dovoljenje VIEW SERVER STATE, (3) Preverite, ali so oddaljene povezave omogočene na SQL Server na primer, (4) znova zaženite SSMS in (5) poskusite vzpostaviti povezavo z overjanjem sistema Windows namesto overjanja SQL, če je to primerno.

V: Kakšna je razlika med nadzornikom aktivnosti in sp_WhoIsActive?

A: Nadzornik aktivnosti je grafično orodje, vgrajeno v SSMS, ki ponuja organizirana podokna za različne vidike spremljanja. sp_WhoIsActive je brezplačna shranjena procedura, ki jo je ustvarila skupnost in vrne podrobne informacije o seji v enem samem naboru rezultatov z bolj specifičnimi vrstami čakanja, podrobnostmi blokiranja in možnostmi prilagajanja kot Nadzornik aktivnosti. Nadzornik aktivnosti je boljši za vizualno raziskovanje, medtem ko sp_WhoIsActive blesti pri skriptnem spremljanju in zagotavlja podrobnejše informacije.

V: Ali Nadzornik aktivnosti vpliva na delovanje strežnika?

A: Da, Activity Monitor ima merljive stroške, ker poizveduje po sistemskih DMV-jih ob vsakem intervalu osveževanja. Vpliv se poveča z nižjimi hitrostmi osveževanja – Microsoft opozarja, da lahko intervali, krajši od 10 sekund, vplivajo na delovanje strežnika. Activity Monitor vedno zaprite, ko ga ne uporabljate aktivno, in na produkcijskih strežnikih z veliko obremenitvijo upoštevajte intervale osveževanja 30–60 sekund.

V: Ali lahko pridobim podatke programa Activity Monitor z uporabo T-SQL?

A: Da, Nadzornik aktivnosti poizveduje po pogledih dinamičnega upravljanja sistema, kot so sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats in sys.dm_exec_query_stats. Te DMV-je lahko poizvedujete neposredno z uporabo T-SQL, da programsko pridobite enakovredne informacije, kar omogoča skripte za spremljanje po meri in avtomatizirano zbiranje podatkov.

V: Kakšen je privzeti interval osveževanja?

A: Privzeti interval osveževanja je 10 sekund. To lahko spremenite tako, da z desno tipko miške kliknete kjer koli v podoknu Pregled in izberete Interval osveževanjain izbira med vnaprej določenimi možnostmi: 1 sekunda, 5 sekund, 10 sekund, 30 sekund, 1 minuta ali 1 ura. Krajši intervali zagotavljajo več pogledov v realnem času, vendar povečajo stroške spremljanja.

V: Kako lahko samodejno odprem Nadzornik aktivnosti ob zagonu SSMS?

A: Konfigurirajte samodejni zagon prek možnosti SSMS: Pomaknite se do Orodja -> možnosti -> Okolje -> Zagon, Nato izberite Odprite Raziskovalec objektov in Nadzornik dejavnosti Iz Ob zagonu spustni meni. Nadzornik aktivnosti se bo samodejno odprl vsakič, ko se povežete s strežnikom v SSMS.

V: Kakšne so omejitve programa Activity Monitor?

A: Ključne omejitve vključujejo: (1) Ni shranjevanja zgodovinskih podatkov ali zmogljivosti spremljanja trendov, (2) Vrste čakanja so združene v kategorije in ne prikazane posebej, (3) Nekatere vrste čakanja, kot je CXPACKET, se morda ne bodo prikazale, (4) Posnetki podatkov v določenem trenutku lahko spregledajo prehodne težave, (5) Stroški spremljanja lahko vplivajo na zasedene strežnike, (6) Ni mehanizma opozarjanja za proaktivno spremljanje in (7) Ni mogoče združiti podatkov iz več SQL Server primerki. Za te potrebe dopolnite Nadzornik aktivnosti z razširjenimi dogodki, nabori za zbiranje podatkov ali orodji za spremljanje drugih ponudnikov.


O Author

Yuan Sheng je višji administrator baz podatkov (DBA) z več kot 10 leti izkušenj na področju SQL Server okolja in upravljanje poslovnih baz podatkov. Uspešno je rešil na stotine scenarijev obnovitve baz podatkov v finančnih storitvah, zdravstvu in proizvodnih organizacijah.

Yuan je specializiran za SQL Server obnovitev baze podatkov, rešitve z visoko razpoložljivostjoin optimizacijo delovanja. Njegove bogate praktične izkušnje vključujejo upravljanje večterabajtnih baz podatkov, implementacijo skupin razpoložljivosti Always On in razvoj avtomatiziranih strategij varnostnega kopiranja in obnovitve za ključne poslovne sisteme.

Yuan se s svojim tehničnim znanjem in praktičnim pristopom osredotoča na ustvarjanje celovitih vodnikov, ki pomagajo skrbnikom baz podatkov in IT-strokovnjakom reševati kompleksne SQL Server učinkovito se spopada z izzivi. Vedno je na tekočem z najnovejšimi SQL Server izdaje in Microsoftove razvijajoče se tehnologije baz podatkov, pri čemer redno testira scenarije obnovitve, da zagotovi, da njegova priporočila odražajo najboljše prakse iz resničnega sveta.

Imate vprašanja o SQL Server obnovitev ali potrebujete dodatna navodila za odpravljanje težav z zbirko podatkov? Yuan pozdravlja povratne informacije in predlogi za izboljšanje teh tehničnih virov.

Skupna raba zdaj: