1. Esittely
1.1 Mikä on SQL Server ActivityMonitor?
SQL Server Aktiviteettien valvonta on sisäänrakennettu diagnostiikkatyökalu SQL Server Management Studio, joka näyttää tietoja SQL Server prosessit ja niiden vaikutus palvelimen suorituskykyyn. Sen avulla voit seurata SQL Server prosesseja, valvoa resurssien odotusaikoja, analysoida kalliita kyselyitä ja tarkkailla I/O-malleja – kaikki yhdestä käyttöliittymästä.
1.2 Miksi käyttää SQL Server ActivityMonitor?
Aktiviteettien valvonta toimii ensimmäisenä puolustuslinjana suorituskykyongelmien vianmäärityksessä. Se tarjoaa välittömän näkymän siihen, mitä laitteellasi tapahtuu. SQL Server instanssi ilman monimutkaisia T-SQL-kyselyitä tai kolmannen osapuolen työkaluja.
Työkalu on erinomainen auttamaan sinua tunnistamaan nopeasti yleisiä ongelmia, kuten istuntojen estymisen, prosessoria kuormittavat kyselyt, liialliset kyselyiden suoritukset ja I/O-pullonkaulat. Kun käyttäjät ilmoittavat sovelluksen olevan hidas tai reagoimaton, Activity Monitor auttaa sinua selvittämään, onko syyllinen tietokantapalvelin.
Tietokannan ylläpitäjille, jotka eivät työskentele SQL Server Päivittäin Activity Monitor tarjoaa helppokäyttöisen lähtökohdan palvelimen toiminnan ymmärtämiseen. Jopa kokeneet tietokannan päälliköt käyttävät sitä lähtökohtana suorituskykytutkimuksille.
1.3 Aktiviteettien seuranta vs. muut valvontatyökalut
Vaikka Aktiviteettien valvonta on hyödyllinen, on tärkeää ymmärtää, miten se vertautuu muihin valvontavaihtoehtoihin:
Aktiviteettien seuranta vs. sp_WhoIsActive: Aktiviteettien valvonta tarjoaa graafisen käyttöliittymän, jossa on useita ruutuja, kun taas sp_WhoIsActive on kattava tallennettu proseduuri, joka tarjoaa yksityiskohtaisempia tietoja yhdessä tulosjoukossa. sp_WhoIsActive näyttää tiettyjä odotustyyppejä, jotka Aktiviteettien valvonta ryhmittelee yhteen, ja tarjoaa yksityiskohtaisempia estotietoja.
Aktiivisuusmonitori vs. sp_who2: Perinteinen sp_who2-komento näyttää istunnon perustiedot, mutta Activity Monitor menee pidemmälle näyttämällä odotustilastoja, kalliita kyselyitä ja I/O-mittareita järjestelmällisessä, visuaalisessa muodossa.
Aktiviteettien valvonta vs. kolmannen osapuolen työkalut: Kaupalliset valvontaratkaisut, kuten SolarWinds Database Performance Analyzer, tarjoavat historiallista seurantaa, hälytyksiä ja edistynyttä analytiikkaa, joita Activity Monitorista puuttuu. Activity Monitor ei kuitenkaan vaadi lisäkustannuksia tai asennusta.
1.4 Tietokannan ylläpitäjien tärkeimmät edut
Activity Monitor tarjoaa useita etuja, jotka tekevät siitä välttämättömän tietokannan hallintatyökalun:
- Nolla kustannuksia: Sisäänrakennettuna SQL Server Management Studio -ominaisuuden ansiosta lisenssimaksuja tai käyttöönottotyötä ei ole.
- Reaaliaikainen seuranta: Näe palvelimen nykyinen toiminta reaaliajassa konfiguroitavilla päivitysväleillä yhdestä sekunnista yhteen tuntiin.
- Integroidut toimenpiteet: Napsauta prosesseja hiiren kakkospainikkeella lopettaaksesi istuntoja, tarkastellaksesi kyselyn tietoja tai käynnistääksesi SQL Server Profilointijäljet – kaikki työkalun sisältä.
- Useita näkökulmia: Tarkastele palvelimen kuntoa eri näkökulmista viiden erikoistuneen ruudun avulla, joista jokainen keskittyy tiettyihin suorituskyvyn osa-alueisiin.
- Nopea vianetsintä: Tunnista yleisimmät suorituskykyongelmat muutamassa minuutissa, mikä nopeuttaa keskimääräistä ratkaisuaikaa.
- Matala pääsyn este: Työkalun tehokkaan käytön aloittamiseen ei vaadita edistyneitä tietoja, vaikkakin syvempää tietoa SQL Server asiantuntemus auttaa tulkinnassa.
2. Aktiviteettimonitorin käytön aloittaminen
Ennen kuin voit hyödyntää Aktiviteettien valvontaa tehokkaasti, sinun on ymmärrettävä työkalun käynnistämisen edellytykset, vaaditut käyttöoikeudet ja eri menetelmät.
2.1 Edellytykset ja järjestelmävaatimukset
Käyttää SQL Server Aktiivisuusmonitori, tarvitset SQL Server Management Studio (SSMS) asennettuna paikalliselle koneellesi tai hyppypalvelimelle. Aktiviteettien valvonta -työkalua on uudistettu merkittävästi vuonna SQL Server 2008, joten tämän oppaan tiedot koskevat SQL Server 2008 ja uudemmat versiot.
Sinulla on oltava verkkoyhteys kohteeseen SQL Server instanssi, jota haluat valvoa. Pilvipalvelussa isännöityjen tietokantojen tapauksessa tarvitset yleensä VPN-yhteyden tai oikein määritetyt palomuurisäännöt instanssin käyttämiseen.
Aktiviteettien valvonta toimii kaikkien versioiden kanssa SQL Server, mukaan lukien Express, Standard ja Enterprise. Itse työkalu toimii asiakaskoneellasi SSMS:n sisällä, joten palvelimen resursseihin vaikuttavat vain sen suorittamat valvontakyselyt.
2.2 Vaaditut käyttöoikeudet
Järjestelmänvalvojan oikean toiminnan edellyttämät asianmukaiset käyttöoikeudet. Ilman tarvittavia käyttöoikeuksia näyttö voi olla tyhjä tai käyttö estetty -virheilmoituksia voi tulla.
2.2.1 PALVELIMEN TILAN NÄYTTÖOIKEUS
NÄYTÄ PALVELIMEN TILA Käyttöoikeus on ensisijainen vaatimus Aktiviteettien valvonnan käyttämiseen. Tämä palvelintason käyttöoikeus antaa sinun nähdä kaikki aktiiviset prosessit ja niihin liittyvät mittarit.
Palvelimen järjestelmänvalvoja voi myöntää tämän käyttöoikeuden suorittamalla seuraavat komennot:
GRANT VIEW SERVER STATE TO [YourLoginName];
Ilman VIEW SERVER STATE -komentoa Aktiviteettien valvonta saattaa avautua, mutta missään ruudussa ei näy tietoja.
2.2.2 Tietokantatason käyttöoikeudet
Tietojen tarkastelemiseen Data File I/O -ruudussa tarvitset lisäkäyttöoikeuksia. Sinulla on oltava erityisesti jokin seuraavista käyttöoikeusyhdistelmistä:
- LUO TIETOKANTA lupaa tai
- MUUTA MITÄ TIETOKANTAA lupaa tai
- NÄYTÄ MIKÄ TAHANSA MÄÄRITELMÄ lupa
Nämä käyttöoikeudet on yhdistettävä NÄYTÄ PALVELIMEN TILA täysi Aktiviteettien valvonnan toiminnallisuus.
2.2.3 Käyttöoikeuksien vianmääritys
Jos Järjestelmänvalvonta avautuu, mutta ei näytä tietoja, yleisin syy on käyttöoikeudet. Tarkista, että kirjautumistunnuksellesi on myönnetty palvelintasolla NÄYTÄ PALVELIN TILA -käyttöoikeus. Voit tarkistaa käyttöoikeutesi suorittamalla:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
Etsi permission_name-sarakkeesta kohta 'VIEW SERVER STATE'. Jos se puuttuu, ota yhteyttä tietokannan ylläpitäjään ja pyydä sitä myöntämään.
2.3 Aktiviteettien valvonnan avaaminen SSMS:ssä
SQL Server Management Studio tarjoaa neljä erilaista tapaa käynnistää Aktiviteettien valvonta, mikä antaa sinulle joustavuutta työnkulkuasetuksiisi perustuen.
2.3.1 Menetelmä 1: Työkalupalkista
Nopein tapa avata Aktiviteettien valvonta on työkalupalkin kuvakkeen avulla:
- Yhdistä SQL Server esimerkiksi SQL Server ManagementStudio.
- Etsi Aktiviteettien valvonta -kuvake vakiotyökaluriviltä (se muistuttaa pylväsdiagrammia, jossa on vihreä toistopainike).
- Käynnistä Aktiviteettien valvonta napsauttamalla kuvaketta.
Tämä menetelmä on nopein, kun työskentelet jo SSMS:ssä ja sinun on tarkistettava palvelimen toiminta nopeasti.
2.3.2 Menetelmä 2: Objektiselaimesta
Voit käynnistää Aktiviteettien valvonnan myös suoraan Objektienhallinnasta:
- Etsi Objektienhallinnassa SQL Server esimerkki, jota haluat seurata.
- Napsauta instanssin nimeä hiiren kakkospainikkeella.
- valita Activity Monitor pikavalikosta.
Tämä menetelmä on hyödyllinen yhdistettäessä useisiin palvelimiin, koska se varmistaa, että valvot oikeaa instanssia.
2.3.3 Menetelmä 3: Näppäinoikotieiden käyttö
Näppäimistöpainotteisille käyttäjille SQL Server Management Studio tarjoaa oman oikopolun:
- Varmista, että SSMS on aktiivinen ikkuna ja että olet yhteydessä instanssiin.
- lehdistö Ctrl + muut + A.
- Aktiviteettien valvonta avautuu valitulle instanssille Object Explorerissa.
Huomaa, että Aktiviteettien valvonta muodostaa yhteyden mihin tahansa palvelininstanssiin, jonka olet valinnut Objektienhallinnassa, joten varmista, että olet valinnut oikean instanssin ennen tämän pikakuvakkeen käyttöä.
2.3.4 Menetelmä 4: Asetukset-valikosta (käynnistysasetukset)
Jos käytät Aktiviteettien valvontaa usein, voit määrittää SSMS:n käynnistämään sen automaattisesti aina, kun käynnistät sovelluksen:
- In SQL Server Management Studio, siirry kohtaan Työkalut -> Vaihtoehdot.
- Laajenna Asetukset-valintaikkunassa ympäristöJa valitse Startup.
- Vuodesta Käynnistettäessä avattavasta luettelosta, valitse Avaa objektiselaimen ja toiminnanvalvonnan.
- valita OK.
Kun seuraavan kerran käynnistät SSMS:n ja muodostat yhteyden palvelimeen, Activity Monitor avautuu automaattisesti Object Explorerin rinnalla.
3. Aktiviteettien valvonta -ruutujen ymmärtäminen
Palvelimen toiminnan valvonta järjestää tiedot viiteen laajennettavaan ruutuun, joista jokainen tarjoaa erilaisen näkökulman palvelimen toimintaan. Kunkin ruudun näyttämän sisällön ymmärtäminen on ratkaisevan tärkeää tehokkaan vianmäärityksen kannalta.
3.1 Yleiskatsausruutu
Yleiskatsaus-ruudussa on neljä reaaliaikaista kaaviota, jotka antavat sinulle nopean tilannekuvan terveydentilastasi. SQL Server esimerkki. Nämä kaaviot päivittyvät määritettävin väliajoin ja auttavat sinua tunnistamaan poikkeavat kuviot yhdellä silmäyksellä.
3.1.1 % Suorittimen aika
Tämä kaavio näyttää prosentteina ajan, jonka prosessori käyttää suorittaessaan ei-tyhjäkäyntisäikeitä SQL Server esiintymä kaikissa suorittimissa. Arvo edustaa SQL Servern prosessorin käyttöastetta, ei koko palvelimen suorittimen käyttöä.
Jos suorittimen käyttöaste on jatkuvasti 100 % tai lähellä sitä, palvelimesi on suorittimen kuormituksessa. Tämä voi viitata tehottomiin kyselyihin, puuttuviin indekseihin tai riittämättömään laitteistokapasiteettiin. Käytä Viimeaikaiset kalliit kyselyt -ruutua tunnistaaksesi, mitkä kyselyt kuluttavat eniten suorittimen kuormitusta.
3.1.2 Odottavat tehtävät
Tämä mittari näyttää niiden tehtävien määrän, jotka odottavat resurssien vapauttamista ennen kuin ne voivat jatkaa. Tehtävät voivat odottaa suorittimen, I/O:n, muistin tai lukitusten varausta.
Jatkuvasti suuri määrä odottavia tehtäviä osoittaa resurssien kilpailua. Resurssien odotusajat -ruutu tarjoaa lisätietoja siitä, minkä tyyppiset resurssit aiheuttavat odotuksia.
3.1.3 Tietokannan I/O (MB/s)
Tämä kaavio näyttää tiedonsiirtonopeuden muistin ja levyn välillä. Se yhdistää sekä luku- että kirjoitusnopeudet megatavuina sekunnissa.
Tietokannan I/O-tietojen piikit voivat viitata kyselyihin, jotka suorittavat suuria taulukoiden tarkistuksia, liialliseen lokikirjaustoimintaan tai tarkistuspistetoimintoihin. Datatiedoston I/O-ruutu erittelee I/O-toiminnan tietokannan ja tiedoston mukaan.
3.1.4 Eräpyynnöt/sekunti
Tämä mittari edustaa niiden lukumäärää, SQL Server instanssin vastaanottamien erien määrä sekunnissa. Erä voi olla yksittäinen lauseke tai useita yhdessä lähetettyjä lausekkeita.
Tämä arvo antaa sinulle käsityksen palvelimen yleisestä toiminnasta. Eräpyyntöjen äkillinen väheneminen normaalin aukioloajan aikana voi viitata sovellusten yhteysongelmiin tai käyttäjien kohtaamiin ongelmiin.
3.1.5 Päivitysvälien asettaminen
Voit mukauttaa sitä, kuinka usein Aktiviteettien valvonta päivittää tietojaan:
- Napsauta hiiren kakkospainikkeella mitä tahansa Yleiskatsaus-ruudun kohtaa.
- valita Päivitä väli.
- Valitse aikaväli valmiiksi määritetyistä arvoista: 1 sekunti, 5 sekuntia, 10 sekuntia (oletus), 30 sekuntia, 1 minuutti tai 1 tunti.
Päivitysvälien asettaminen alle 10 sekunniksi lisää palvelimesi valvontakuormitusta. Raskaan kuormituksen omaavissa tuotantojärjestelmissä harkitse 30 sekunnin tai pidempien välien käyttöä vaikutuksen minimoimiseksi.
3.2 Prosessit-ruutu
Prosessit-ruutu näyttää tietoja parhaillaan käynnissä olevista istunnoista SQL Server esimerkki. Tämä ruutu on olennainen sen tunnistamiseksi, kuka tekee mitä, ja estävien ongelmien havaitsemiseksi.
3.2.1 Prosessitietojen ymmärtäminen
Jokainen Prosessit-ruudun rivi edustaa aktiivista istuntoa palvelimella. Ruutu näyttää kaikkien tietokantojen ja kaikkien käyttäjien istunnot, mikä antaa kattavan kuvan palvelimen toiminnasta.
Näytettävät tiedot sisältävät kirjautumisnimen, sovelluksen nimen, isäntänimen, käytettävän tietokannan ja nykyisen komennon. Tämä auttaa sinua yhdistämään tietokannan toiminnan tiettyihin käyttäjiin tai sovelluksiin.
3.2.2 Keskeisten sarakkeiden selitys
Keskeisten sarakkeiden ymmärtäminen auttaa sinua tulkitsemaan prosessitietoja tehokkaasti:
- Istunnon tunniste: Yksilöllinen tunniste kullekin yhteydelle. Järjestelmäprosessit käyttävät negatiivisia istuntotunnuksia.
- Käyttäjäprosessi: Ilmaisee, onko kyseessä käyttäjäistunto (Kyllä) vai järjestelmäprosessi (Ei).
- Kirjaudu: SQL Server istuntoon liittyvä kirjautumistunnus tai Windows-tili.
- Tietokanta: Istunnon nykyinen tietokannan konteksti.
- Tehtävän tila: Näyttää, mitä harjoitus tekee parhaillaan (KÄYNNISSÄ, KESKEYTETTYNÄ, NUKKUMISTILASSA jne.).
- Command: Suoritettavan komennon tyyppi (SELECT, INSERT, UPDATE jne.).
- Sovellus: Yhteyden luoneen sovelluksen nimi.
- Odotusaika: Kuinka kauan (millisekunteina) istunto on odottanut resursseja.
- Odotustyyppi: Istunto odottaa tiettyä resurssin tyyppiä.
- Suorittimen aika: Tämän istunnon käyttämä kokonaissuoritinaika yhteyden muodostamisen jälkeen.
- Muistin käyttö: Istunnolle tällä hetkellä varatun muistin määrä (kb).
3.2.3 Suodatus- ja lajitteluprosessit
Prosessit-ruutu sisältää tehokkaita suodatusominaisuuksia, joiden avulla voit keskittyä olennaisiin istuntoihin:
- Napsauta minkä tahansa sarakkeen otsikossa olevaa alasvetovalikkoa.
- Suodatin näyttää kyseisen sarakkeen käytettävissä olevat arvot, mukaan lukien Kaikki, aihioitaja Ei-tyhjät.
- Valitse tietyt arvot suodattaaksesi näytön vain kyseisiin istuntoihin.
Voit esimerkiksi suodattaa Tehtävän tila näyttääksesi vain KÄYNNISSÄ OLEVAT harjoitukset tai suodata tietokanta nähdäksesi aktiviteetin tietyssä tietokannassa.
Voit myös lajitella minkä tahansa sarakkeen mukaan napsauttamalla sen otsikkoa. Napsauta kerran nousevaan järjestykseen ja kahdesti laskevaan järjestykseen.
3.2.4 Estävien ja estettyjenä pidettävien istuntojen tunnistaminen
Prosessit-ruutu auttaa tunnistamaan estäviä tilanteita, joissa yksi istunto estää muita etenemästä:
- Estänyt: Näyttää istunnon estävän istunnon tunnuksen. Jos tässä sarakkeessa on arvo, istunto odottaa toisen istunnon lukitusta.
- Pään estäjä: Näyttää arvon '1', jos tämä istunto estää muita istuntoja, mutta ei itse ole estetty. Tämä on estoketjun perimmäinen syy.
Esto-ongelman tutkimiseksi tunnista ensin pään estäjä (istunto, joka on merkitty numerolla '1' Pään estäjä -sarakkeessa), tutki sitten sen toimintaa ja päätä, annatko sen suorittaa sen loppuun vai lopetatko sen.
3.2.5 Prosessitoiminnot (Kill, Details, Trace)
Aktiviteettien valvonnan avulla voit tehdä toimia yksittäisten istuntojen aikana:
- Napsauta hiiren kakkospainikkeella mitä tahansa istuntoa Prosessit-ruudussa.
- Näet useita vaihtoehtoja:
- Lisätiedot: Näyttää tässä istunnossa viimeksi suoritetun komennon.
- Tappamisprosessi: Lopettaa istunnon (käytä varoen).
- Jäljitysprosessi sisään SQL Server profiloija: Aloittaa SQL Server Profiler ja suodattuu automaattisesti näyttämään vain tämän istunnon toiminnan.
Tiedot-vaihtoehto näyttää komentotekstin, mutta huomaa, että tämä on viime komento suoritettu – se ei välttämättä ole vielä käynnissä. Jäljitys-vaihtoehto on erityisen hyödyllinen, kun sinun on nähtävä istunnon suorittamien komentojen koko järjestys.
3.3 Resurssien odotusruudussa
Resurssien odotusajat -ruutu näyttää yhteenvedon odotustilastoista ja näyttää, minkä tyyppisiä resursseja istunnot odottavat useimmiten. Nämä tiedot ovat ratkaisevan tärkeitä suorituskyvyn pullonkaulojen diagnosoinnissa.
3.3.1 Odotustilastojen ymmärtäminen
Kun SQL Server ei voi välittömästi myöntää resurssipyyntöä (kuten lukitusta, suorittimen aikaa tai muistia), pyynnön esittänyt tehtävä siirtyy odotustilaan. Odotustilastot seuraavat näitä odotusaikoja ja auttavat ymmärtämään, missä palvelin viettää aikaa odottamalla työskentelyn sijaan.
Resurssien odotusajat -ruutu kerää tietoja järjestelmän dynaamisen hallinnan näkymistä, kuten sys.dm_os_wait_stats ja sys.dm_exec_requests. Jokaisella päivitysvälillä se laskee nykyisen ja edellisen tilannevedoksen välisen eron, mikä näyttää kunkin odotustyypin kertymisnopeuden.
3.3.2 Odotusluokat
Aktiviteettien valvonta ryhmittelee satoja yksittäisiä odotustyyppejä laajempiin luokkiin tulkinnan yksinkertaistamiseksi:
- CPU: Tehtävät odottavat suorittimen ajan vapautumista.
- Puskurin salpa: Odottaa lyhytaikaisia synkronointiobjekteja, jotka suojaavat muistissa olevien datasivujen käyttöä. Tähän luokkaan kuuluvat sivun lukitusodotukset (PAGELATCH_*).
- Lukko: Odotusajat, jotka johtuvat istunnoista, joissa on muiden istuntojen tarvitsemia lukkoja.
- Muisti: Odottaa muistin myöntämistä toiminnoille, kuten lajittelulle ja hajautukselle.
- Verkon I/O: Odottaa datan lähettämistä asiakkaille tai datan vastaanottamista asiakkailta.
- SQL-sulkemistoiminto: Common Language Runtime -suoritukseen liittyvät odotusajat.
Vaikka tämä ryhmittely yksinkertaistaa näkymää, se myös peittää tärkeitä yksityiskohtia. Esimerkiksi ”Puskurin lukitus” saattaa ryhmitellä yhteen PAGELATCH_SH-, PAGELATCH_UP- ja PAGELATCH_EX-odotukset, joilla on erilaisia vaikutuksia suorituskykyyn.
3.3.3 Odotusajan ja odotustehtävien tulkinta
Resurssien odotusajat -ruudussa näkyy kaksi keskeistä mittaria kullekin odotuskategorialle:
- Kumulatiivinen odotusaika (ms): Tämän odotusluokan nykyisen päivitysvälin aikana kertynyt millisekuntien kokonaismäärä.
- Odottavat tehtävät: Tämän luokan resursseja odottavien tehtävien määrä.
Odotusajan arvo on erityisen mielenkiintoinen. Jos päivitysväli on 10 sekuntia ja odotusaika kategorialle on 20 000 ms, se tarkoittaa useita samanaikaisia odotuksia (20 000 ms / 10 000 ms = kahden samanaikaisen odotuksen keskiarvo aikavälin aikana).
3.3.4 Suorituskyvyn pullonkaulojen tunnistaminen
Resurssien odotusajat -ruudun avulla voit tunnistaa, missä palvelimesi viettää eniten aikaa odottamassa:
- Laajenna Resurssien odotusajat -ruutu.
- Tarkkaile odotusluokkia, joissa on pisimmät odotusajat.
- Järjestä Kumulatiivinen odotusaika nähdäkseen, mitkä resurssit ovat eniten rajalliset.
Korkeat puskurisalpausodotukset viittaavat usein muistissa olevien datasivujen kilpailuun, mikä voi viitata I/O-pullonkauloihin tai tempdb-kilpailuun. Korkeat lukitusodotukset viittaavat esto-ongelmiin. Korkeat muistiodotukset viittaavat riittämättömiin muistimäärään kyselytoiminnoille.
3.4 Tiedoston I/O-ruutu
Datatiedoston I/O-ruutu näyttää palvelimesi kunkin tietokantatiedoston levytoiminnan, mikä auttaa tunnistamaan I/O-pullonkauloja ja ymmärtämään levyn käyttömalleja.
3.4.1 I/O-metriikoiden ymmärtäminen
Datatiedoston I/O-ruudussa näkyy useita mittareita kullekin tietokantatiedostolle:
- Tietokanta: Tietokannan nimi.
- Tiedostotyyppi: Joko Data (mukaan lukien taulukot ja indeksit) tai Loki (tapahtumaloki).
- Looginen nimi: Looginen tiedostonimi, kuten se on määritelty kohdassa SQL Server.
- Mt/s Luettu: Tiedostosta luettavien tietojen nopeus.
- Mt/s kirjoitettu: Tähän tiedostoon kirjoitettavan datan nopeus.
- Vastausaika (ms): Tämän tiedoston I/O-toimintojen keskimääräinen vasteaika.
Nämä mittarit päivittyvät samalla aikavälillä kuin Yleiskatsaus-ruutu, mikä antaa sinulle reaaliaikaisen näkymän levyn toimintaan.
3.4.2 I/O-pullonkaulojen tunnistaminen
Tarkkaile näitä I/O-suorituskykyongelmiin viittaavia kaavoja:
- Korkea vasteaika: Jatkuvasti yli 15–20 ms:n vasteajat viittaavat hitaisiin levyalijärjestelmiin. Yli 50 ms:n vasteajat viittaavat vakaviin I/O-pullonkauloihin.
- Epätasapainoinen kuorma: Jos yhden datatiedoston I/O-nopeudet ovat huomattavasti korkeammat kuin muiden saman tietokannan datatiedostojen, voi olla hyödyllistä lisätä tiedostoja kuormituksen jakamiseksi.
- Liiallinen Tempdb-aktiivisuus: Tempdb-tiedostojen korkeat I/O-nopeudet viittaavat usein kyselyihin, jotka luovat suuria välitulosjoukkoja tai käyttävät tehottomia suoritussuunnitelmia.
3.4.3 Tietokantatiedostojen analysointi
Datatiedoston I/O-ruudun avulla voit ymmärtää, miten tietokannat käyttävät levyresursseja:
- Laajenna Datatiedoston I/O-ruutu.
- Järjestä Mt/s luku or Mt/s kirjoitettu aktiivisimpien tiedostojen tunnistamiseksi.
- Huomioi tiedostot, joilla on jatkuvasti paljon aktiivisuutta tai pitkät vasteajat.
- Vertaile näitä tietoja Viimeisimmät kalliit kyselyt -ruutuun tunnistaaksesi, mitkä kyselyt ohjaavat I/O-kuormitusta.
3.5 Viimeaikaiset kalliit kyselyt -ruutu
Viimeaikaiset kalliit kyselyt -ruutu on usein arvokkain ruutu sovellusten suorituskykyongelmien vianmäärityksessä. Se näyttää kyselyt, jotka kuluttavat merkittävästi palvelinresursseja, mikä auttaa tunnistamaan optimointimahdollisuuksia.
3.5.1 Kyselymittareiden ymmärtäminen
Aktiviteettien valvonta näyttää useita mittareita jokaiselle kalliille kyselylle:
- Suorituksia/min: Kuinka monta kertaa kysely suoritettiin viimeisen minuutin aikana.
- Suoritin (ms/s): Tämän kyselyn käyttämä suorittimen aika sekunnissa.
- Fyysisiä lukuja/sekunti: Fyysisten levyn lukukertojen määrä sekunnissa tälle kyselylle.
- Loogiset kirjoitukset/sekunti: Loogisten kirjoitusten määrä (välimuistin puskurointiin) sekunnissa.
- Loogiset lukemat/sekunti: Loogisten lukukertojen määrä (puskurivälimuistista) sekunnissa.
- Keskimääräinen kesto (ms): Tämän kyselyn keskimääräinen suoritusaika.
- Suunnitelmien määrä: Tämän kyselyn välimuistissa olevien suoritussuunnitelmien määrä.
Näiden mittareiden avulla ymmärrät paitsi mitkä kyselyt ovat kalliita, myös miksi ne ovat kalliita ja kuinka usein ne kulkevat.
3.5.2 Lajitteluasetukset
Voit lajitella Viimeaikaiset kalliit kyselyt -ruudun eri mittareiden mukaan löytääksesi erityyppisiä ongelmia:
- Lajittele minkä tahansa mittarin mukaan napsauttamalla sarakeotsikkoa.
- Yleisiä lajittelustrategioita ovat:
- Lajittele suorittimen mukaan: Etsi kyselyitä, jotka kuluttavat eniten prosessoriaikaa.
- Lajittele suoritusten/min mukaan: Tunnista kyselyt, jotka suoritetaan liian usein.
- Lajittele fyysisten lukukertojen mukaan: Etsi kyselyt, jotka aiheuttavat eniten levyllä tapahtuvaa I/O:ta.
- Lajittele keskimääräisen keston mukaan: Paikanna pitkään käynnissä olevat kyselyt.
Kun vianmäärität suorituskykyongelmaa, kokeile lajitella useiden sarakkeiden mukaan saadaksesi erilaisia näkökulmia. Kysely, jolla on kohtalainen prosessorin käyttö, mutta erittäin korkea suoritusmäärä minuutissa, saattaa olla todellinen ongelma.
3.5.3 Kyselytekstin tarkastelu
Kalliin kyselyn taustalla olevan varsinaisen SQL-lausekkeen näkeminen:
- Napsauta hiiren kakkospainikkeella kyselyriviä Viimeisimmät kalliit kyselyt -ruudussa.
- valita Muokkaa kyselytekstiä.
- Uusi kyselyikkuna avautuu ja näyttää koko SQL-lausekkeen.
Näin voit tutkia kyselylogiikkaa ja tunnistaa potentiaalisia optimointimahdollisuuksia. Voit sitten kopioida kyselytekstin testataksesi muokattuja versioita.
3.5.4 Toteutussuunnitelmien analysointi
Toteutussuunnitelmat näyttävät, miten SQL Server suorittaa kyselyn paljastaen tehottomuuksia, kuten puuttuvia indeksejä tai sopimattomia liitostyyppejä:
- Napsauta hiiren kakkospainikkeella kyselyriviä Viimeisimmät kalliit kyselyt -ruudussa.
- valita Näytä toteutussuunnitelma.
- SQL Server Management Studio näyttää graafisen esityksen kyselyn suoritustavasta.
Etsi toimintoja, jotka kuluttavat suuren osan kyselyn kustannuksista, varoituksia puuttuvista tilastoista tai indekseistä ja odottamattomia taulukon skannaustoimintoja. Nämä usein osoittavat, mihin optimointitoimien tulisi keskittyä.
3.5.5 Ongelmallisten kyselyiden tunnistaminen
Tarkkaile näitä kaavoja Viimeisimmät kalliit kyselyt -ruudussa:
- Liialliset teloitukset: Tuhansia kertoja minuutissa suoritettava kysely voi viitata N+1-kyselyongelmaan, jossa sovelluskoodi kutsuu tietokantaa silmukan sisällä.
- Korkeat fyysiset lukemat: Kyselyt, joilla on korkea fyysinen lukunopeus, osuvat levylle usein, mikä viittaa puuttuviin indekseihin tai huonosti kirjoitettuihin kyselyihin.
- Korkea suorittimen teho ja lyhyt kesto: Monet nopeat kyselyt, jotka kuluttavat paljon prosessoria, voivat vaikuttaa palvelimen suorituskykyyn yhtä paljon kuin muutama hidas kysely.
- Useita suunnitelmia lasketaan: Useita suoritussuunnitelmia sisältävät kyselyt saattavat kärsiä parametrien nuuskimisongelmista tai parametrisoimattomista kyselyistä, jotka aiheuttavat suunnitelmien välimuistin turvotusta.
4. Aktiviteettien valvonnan käyttäminen suorituskyvyn vianmääritykseen
Aktiviteettien valvonta loistaa todella, kun käytät sitä systemaattisesti suorituskykyongelmien diagnosointiin ja ratkaisemiseen. Tässä osiossa käsitellään yleisiä vianmääritystilanteita ja niiden lähestymistapoja.
4.1 Liiallisten kyselyiden suoritusmäärien diagnosointi
Yksi yleisimmistä suorituskykyongelmista on kyselyiden suorittaminen paljon useammin kuin on tarpeen, usein sovellussuunnitteluongelmien vuoksi.
4.1.1 Toistuvien kyselyiden tunnistaminen
Liian usein suoritettavien kyselyiden havaitsemiseksi:
- Avaa Aktiviteettien valvonta ja laajenna Viimeaikaiset kalliit kyselyt ruudussa.
- Järjestä Suorituksia/min (suorituksia minuutissa).
- Etsi yläreunasta kyselyitä, joiden suoritusmäärät vaikuttavat kohtuuttoman korkeilta.
- Napsauta epäilyttävää kyselyä hiiren kakkospainikkeella ja valitse Muokkaa kyselytekstiä tutkiaksesi SQL-lausetta.
Jos esimerkiksi näet yksinkertaisen SELECT-lausekkeen, jota suoritetaan 37 000 kertaa minuutissa, on syytä miettiä, tarvitseeko sovelluksen todella kutsua tätä kyselyä niin usein. Useimmat kyselyt, joita suoritetaan useammin kuin muutama tuhat kertaa minuutissa, vaativat tutkimista.
4.1.2 Perussyyanalyysi
Liiallinen kyselyiden suorittaminen johtuu tyypillisesti näistä ongelmista:
- N+1-kyselyongelma: Sovelluskoodi hakee luettelon kohteista ja suorittaa sitten erillisen kyselyn jokaiselle kohteelle asiaankuuluvien tietojen hakemiseksi. Tämä luo N lisäkyselyä, missä N on kohteiden lukumäärä.
- Puuttuva välimuisti: Sovellus kyselee tietokannasta tietoja, jotka muuttuvat harvoin, sen sijaan, että se tallentaisi ne välimuistiin.
- Kyselykierrosten määrä: Koodi kyselee tietokannasta toistuvasti tilanmuutoksia sen sijaan, että käyttäisi muutosilmoituksia tai viestijonoja.
- ORM:n tehottomuus: Entity Framework ja vastaavat työkalut tuottavat joskus tehottomia kyselykuvioita, kun kehittäjät eivät ymmärrä, miten heidän koodinsa kääntyy SQL:ksi.
Voit selvittää perimmäisen syyn jäljittämällä kyselyn takaisin sovelluskoodiin. Huomaa Hakemus ja Kirjaudu sarakkeet Prosessit-ruudussa, kun kysely suoritetaan. Voit myös napsauttaa prosessia hiiren kakkospainikkeella ja valita Jäljitysprosessi sisään SQL Server Profiler nähdäksesi soittokuvion.
4.1.3 Ratkaisut ja parhaat käytännöt
Kun olet tunnistanut liiallisia kyselyiden suorituksia, harkitse seuraavia ratkaisuja:
- Eräkäsittely: Muokkaa sovelluskoodia hakemaan useita kohteita yhdellä kyselyllä käyttämällä liitoksia tai IN-lausekkeita sen sijaan, että suorittaisit erillisiä kyselyitä silmukassa.
- Tulosten välimuistiin tallentaminen: Välimuistia käytetään usein, ja sen tiedot muuttuvat harvoin sovellusmuistissa asianmukaisin vanhenemisajoin.
- Innokas lataus: Määritä ORM-järjestelmät käyttämään innokkaita latausstrategioita, jotka hakevat toisiinsa liittyvää dataa vähemmillä ja tehokkaammilla kyselyillä.
- Kyselyparametrointi: Varmista, että kyselyt käyttävät parametreja arvojen yhdistämisen sijaan, mikä parantaa suunnitelman välimuistin uudelleenkäyttöä ja vähentää käännöstyön kustannuksia.
4.2 Esto-ongelmien tutkiminen
Esto tapahtuu, kun yhdessä istunnossa on lukituksia, jotka estävät muita istuntoja jatkumasta. Tämä ilmenee hitaina sovellusten vasteaikoina ja turhautuneina käyttäjinä.
4.2.1 Estoketjujen tunnistaminen
Estojen havaitsemiseksi ja analysoimiseksi:
- Avaa Aktiviteettien valvonta ja laajenna prosessit ruudussa.
- Etsi istuntoja, joiden arvot ovat Estetty sarake – nämä odottavat muiden istuntojen lukituksia.
- Etsi istuntoja, joiden kohdassa on '1' Pään estäjä sarake – nämä ovat ketjujen tukkeutumisen perimmäinen syy.
- Huomaa Istunnon tunniste pään estäjästä.
- Napsauta hiiren kakkospainikkeella pään esto -istuntoa ja valitse Lisätiedot nähdäkseen, mitä komentoa se suorittaa.
Estoketjun ymmärtäminen on ratkaisevan tärkeää. Tutkittava on se istunto, joka estää ketjun alkupään, ei sitä seuraavaa estettyä istuntoa.
4.2.2 Lukkotyyppien ymmärtäminen
Odotustyyppi Prosessi-ruudun -sarake osoittaa, minkä tyyppisiä lukitusestettyjä istuntoja odotetaan:
- LCK_M_X: Yksinomainen lukitusodotus, jonka tyypillisesti aiheuttavat UPDATE-, DELETE- tai INSERT-toiminnot.
- LCK_M_S: Jaetun lukituksen odotus, yleensä SELECT-lausekkeet odottavat eksklusiivisten lukkojen vapautumista.
- LCK_M_U: Päivityksen lukituksen odotus, päivitysten aikana käytettävä väliaikainen lukitustyyppi.
- LCK_M_IX: Intent-yksinoikeudella lukituksen odotus, joka ilmaisee sivu- tai rivitason lukituskiistan.
Odota resurssi sarake näyttää, mikä tietokantaobjekti on lukittuna, mikä auttaa ymmärtämään, mikä taulukko tai indeksi on osallisena kilpailussa.
4.2.3 Esto-ongelmien ratkaiseminen
Kun olet tunnistanut estävän istunnon ja sen toiminnan, sinulla on useita vaihtoehtoja:
- Odota valmistumista: Jos pään esto-ohjelma suorittaa laillista kyselyä, joka valmistuu pian, voi olla parasta antaa sen valmistua luonnollisesti.
- Lopeta istunto: Jos pään estotoiminto on jumissa tai suorittaa kyselyä, joka tulisi peruuttaa:
- Napsauta istuntoa hiiren kakkospainikkeella Prosessit-ruudussa.
- valita Tapa Process.
- Vahvista toiminto valintaikkunassa.
- Optimoi kyselyt: Jos esto toistuu samojen kyselyiden kanssa, optimoi ne lyhentääksesi lukituksen kestoa.
- Säädä eristystasoja: Harkitse READ COMMITTED SNAPSHOT ISOLATION -ominaisuuden käyttöä estääksesi lukupainotteisten työkuormien eston.
- Hakemiston viritys: Lisää indeksejä nopeuttaaksesi kyselyitä ja lyhentääksesi lukitusten kestoa.
4.3 Korkean suorittimen käytön analysointi
Kun Yhteenveto-ruudussa näkyy prosessorin käyttöaika jatkuvasti 100 %:ssa tai lähellä sitä, sinun on tunnistettava, mitkä kyselyt ovat vastuussa tästä, ja määritettävä, voidaanko ne optimoida.
4.3.1 CPU-intensiivisten kyselyiden tunnistaminen
Liikaa prosessoritehoa kuluttavien kyselyiden löytämiseksi:
- Avaa Viimeaikaiset kalliit kyselyt ruudussa.
- Järjestä Suoritin (ms/s) näyttääkseen kyselyt käyttämällä eniten prosessoriaikaa.
- Tutki luettelon yleisimpiä kyselyitä.
- Napsauta hiiren kakkospainikkeella paljon suorittimen tehoa vaativia kyselyitä ja valitse Muokkaa kyselytekstiä tarkastellaksesi SQL-lauseketta.
- valita Näytä toteutussuunnitelma ymmärtääkseen, miten kysely suoritetaan.
Kiinnitä huomiota paitsi yksittäisen kyselyn suorittimen käyttöön myös Suorituksia/min sarake. Kysely, joka käyttää kohtuullisesti suoritintehoa suoritusta kohden, mutta jota suoritetaan tuhansia kertoja minuutissa, voi olla suurin suoritintehon kuluttaja.
4.3.2 Kyselyoptimointitekniikat
Yleisiä tapoja vähentää suorittimen kulutusta ovat:
- Lisää puuttuvat indeksit: Indeksihaut käyttävät paljon vähemmän prosessoria kuin taulukkoskannaukset. Etsi puuttuvia indeksisuosituksia suoritussuunnitelmista.
- Kirjoita tehottomat kyselyt uudelleen: Korvaa kursorit joukkoon perustuvilla operaatioilla, poista tarpeettomat funktiot WHERE-lauseista ja poista tarpeettomat liitokset.
- Päivitä tilastot: Vanhentuneet tilastot aiheuttavat SQL Server valita tehottomat suoritussuunnitelmat. Suorita UPDATE STATISTICS -komento kyseisille taulukoille.
- Vähennä datamäärää: Lisää WHERE-lausekkeita suodattaaksesi tietoja aikaisemmin, käytä sivutukseen TOP- tai OFFSET/FETCH-lauseita ja vältä SELECT * -lauseita.
- Korjaa parametrien nuuhkiminen: Käytä OPTION (RECOMPILE) -funktiota, kyselyvihjeitä tai suunnitteluoppaita, kun parametrien nuuhkiminen aiheuttaa ongelmia.
4.4 Muistiongelmien tutkiminen
Muistin puute voi aiheuttaa kyselyiden leviämisen levylle, mikä heikentää suorituskykyä merkittävästi. Järjestelmävalvonta auttaa tunnistamaan muistia paljon vaativat toiminnot.
4.4.1 Muistimetriikkojen ymmärtäminen
Muistin käyttö Prosessi-ruudun -sarake näyttää kullekin istunnolle varatun muistin kilotavuina. Yksittäisen istunnon suuri muistin käyttöaste osoittaa usein:
- Suuret lajittelu- tai hajautusoperaatiot, jotka eivät mahtuneet alun perin myönnettyyn muistiin
- Kyselyt, jotka hakevat valtavia tulosjoukkoja
- Liiallinen rinnakkaisuus, joka luo useita kopioita suoritussuunnitelman operaattoreista
- Muistivuotoja CLR-tallennetuissa proseduureissa tai funktioissa
Resurssien odotusajat -ruudussa saattaa näkyä muistin odotusajat, kun kyselyt eivät pysty saamaan riittävästi muistia ja niiden on odotettava muistin vapautumista.
4.4.2 Muistia kuluttavien kyselyiden tunnistaminen
Muistipaineita aiheuttavien kyselyiden löytämiseksi:
- In prosessit ruutu, lajitteluperuste Muistin käyttö nähdäksesi eniten muistia kuluttavat istunnot.
- Napsauta hiiren kakkospainikkeella istuntoja, joissa on paljon muistia, ja valitse Lisätiedot nähdäksesi heidän kyselynsä.
- In Viimeaikaiset kalliit kyselyt ruudusta, etsi kyselyitä, joilla on korkea Loogiset lukemat or Loogiset kirjoituksetkoska nämä usein korreloivat muistin käytön kanssa.
- Tarkastele muistin myöntämistä käyttävien Sort- ja Hash Match -operaattoreiden suoritussuunnitelmia.
Kyselyt, jotka näyttävät ”Memory Grant” -varoituksia suoritussuunnitelmissa tai vuotovaroituksia, viittaavat muistipaineongelmiin.
4.5 Sovelluksen suorituskykyongelmien havaitseminen
Kun käyttäjät raportoivat hitaista sovellusten vasteajoista, Activity Monitor auttaa sinua selvittämään, onko tietokanta pullonkaula.
4.5.1 Aktiviteettien valvonnan ja sovellusongelmien yhdistäminen
Sovelluksen hitauden tutkimiseksi:
- Kirjaa muistiin tarkka aika, jolloin käyttäjät ilmoittavat ongelmista, ja sovellukset, joihin ne vaikuttavat.
- Avaa Aktiviteettien valvonta ja tarkista Yleiskatsaus ruutu resurssien piikeille tuolloin.
- In prosessit ruutu, suodata Hakemus näyttääksesi vain kyseisestä sovelluksesta tulevat yhteydet.
- Etsi korkeaa Odotusaika arvoja, jotka osoittavat tietokannan viiveitä.
- Tarkista Viimeaikaiset kalliit kyselyt ruudussa kyseisen sovelluksen merkittävästi resursseja kuluttavia kyselyitä varten.
Jos tietokannassa ei näy epätavallista toimintaa, vaikka käyttäjät kokevat hitautta, ongelma on todennäköisesti sovelluskoodissa, verkon viiveessä tai asiakaspuolen suorituskyvyssä.
4.5.2 Tehottomien sovellusmallien tunnistaminen
Activity Monitor paljastaa useita sovellussuunnittelun vastakkaisia kaavoja:
- Chatty-sovellukset: Useita pieniä kyselyitä harvempien ja tehokkaampien kyselyiden sijaan. Tunnistaa suuri yhteysmäärä ja lukuisat yksinkertaiset kyselyt Viimeaikaiset kalliit kyselyt -luettelossa.
- N+1 kyselyä: Yksi kysely, jota seuraa N lisäkyselyä aiheeseen liittyville tiedoille. Näyttää yksinkertaisena kyselynä, jolla on erittäin korkea suoritusmäärä minuutissa.
- Suuret tulosjoukot: Sovellukset hakevat paljon enemmän tietoa kuin tarvitaan. Etsi korkeaa Loogiset lukemat yhdistettynä yksinkertaisiin SELECT * -kyselyihin.
- Puuttuvat aikakatkaisut: Sovellukset, jotka eivät aseta komentojen aikakatkaisuja, saattavat jättää yhteydet auki loputtomiin, mikä näkyy pitkään jatkuvina istuntoina Prosessit-ruudussa.
5. Vaihtoehtoiset menetelmät: Aktiviteettien monitorointitietojen hankkiminen T-SQL:n kautta
Vaikka Aktiviteettien valvonta tarjoaa kätevän graafisen käyttöliittymän, joskus sinun on haettava vastaavat tiedot ohjelmallisesti tai luotava mukautettuja valvontaratkaisuja.
5.1 Dynaamisten hallintanäkymien (DMV) käyttö
SQL Server näyttää aktiviteettitiedot dynaamisten hallintanäkymien kautta, joita Aktiviteettien valvonta kyselee kulissien takana.
5.1.1 Aktiivisuuden seurannan keskeiset DMV:t
Tärkeimmät ajoneuvoverkot Activity Monitor -toimintojen replikointiin ovat:
- sys.dm_exec_requests: Näyttää parhaillaan suoritettavat pyynnöt sekä tiedot suorittimesta, I/O:sta ja odotusajasta.
- sys.dm_exec_sessions: Sisältää istuntotason tietoja, kuten kirjautumisnimen, isäntänimen ja ohjelman nimen.
- sys.dm_os_wait_stats: Tarjoaa kumulatiiviset odotustilastot koko instanssille.
- sys.dm_exec_query_stats: Sisältää välimuistissa olevien kyselyiden koostetut suorituskykytilastot.
- sys.dm_io_virtual_file_stats: Palauttaa datan ja lokitiedostojen I/O-tilastot.
- sys.dm_exec_sql_text: Hakee annetun sql_handle- tai plan_handle-muuttujaan liittyvän SQL-tekstin.
- sys.dm_exec_query_plan: Palauttaa välimuistissa olevan kyselyn suoritussuunnitelman.
5.1.2 Prosessitietojen esimerkkikyselyt
Voit replikoida Prosessit-ruudun toiminnot tekemällä kyselyn:
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 Esimerkkikyselyt odotustilastoille
Resurssien odotustilastojen kaltaisten odotustilastojen tarkasteleminen:
SELECT TOP 10
wait_type AS [Wait Type],
wait_time_ms / 1000.0 AS [Wait Time (sec)],
waiting_tasks_count AS [Waiting Tasks],
wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
AND wait_type NOT LIKE '%IDLE%'
AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;
5.2 sp_WhoIsActiven käyttö
sp_WhoIsActive on tehokas yhteisön luoma tallennettu proseduuri, joka tarjoaa yksityiskohtaisempia tietoja kuin Activity Monitor yhdessä tulosjoukossa.
5.2.1 sp_WhoIsActiven asentaminen
sp_WhoIsActiven asentaminen:
- Lataa uusin versio osoitteesta
http://whoisactive.com. - Ladattava tiedosto on SQL-skripti, joka sisältää proseduurimääritelmän.
- Avaa skripti SQL Server ManagementStudio.
- Yhdistä SQL Server ilmentymä.
- Suorita komentosarja luodaksesi proseduurin päätietokantaan.
- Myönnä suoritusoikeudet asianmukaisille käyttäjille.
Koska sp_WhoIsActive on asennettu päätietokantaan, siihen pääsee käsiksi mistä tahansa tietokantakontekstista.
5.2.2 Peruskäyttöesimerkkejä
Yksinkertaisin tapa käyttää sp_WhoIsActive-funktiota on:
EXEC sp_WhoIsActive;
Tämä palauttaa tulosjoukon, joka näyttää kaikki aktiiviset istunnot kyselyineen, odotustyyppeineen, estotietoineen ja resurssien käyttötietoineen.
10 sekunnin otos, joka näyttää aktiivisuuden kyseisenä aikana:
EXEC sp_WhoIsActive @delta_interval = 10;
Tämä laskee deltoja mittareille, kuten suorittimen teholle ja lukumäärille, ja näyttää, mitä tapahtui noiden 10 sekunnin aikana.
5.2.3 Lisäparametrit
sp_WhoIsActive tukee useita mukautusparametreja:
- @suodattaa: Suodata tulokset tiettyjen istuntojen, tietokantojen tai kirjautumisten mukaan.
- @suodattimen_tyyppi: Määritä, mihin suodatinta sovelletaan (istunto, tietokanta, kirjautuminen jne.).
- @get_plans: Sisällytä suoritussuunnitelmat tuloksiin (aseta arvoksi 1).
- @get_locks: Näytä yksityiskohtaiset lukitustiedot (aseta arvoon 1).
- @get_transaction_info: Näytä tapahtuman tiedot (aseta arvoon 1).
- @lajittelujärjestys: Järjestä tulokset eri mittareiden (prosessori, lukukerrat, kesto jne.) mukaan.
- @kohdetaulukko: Lisää tulokset taulukkoon historiallista seurantaa varten.
Esimerkki suorittimen mukaan lajitelluista paketeista:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Järjestelmään tallennettujen proseduurien käyttö
SQL Server sisältää perinteisiä tallennettuja proseduureja toiminnan seurantaan, vaikkakin ne tarjoavat vähemmän tietoa kuin ajoneuvohallintovirastot tai toiminnan valvonta.
5.3.1 sp_who ja sp_who2
sp_who-proseduuri näyttää istunnon perustiedot:
EXEC sp_who;
Sp_who2-proseduuri tarjoaa hieman enemmän yksityiskohtia:
EXEC sp_who2;
Molemmat menetelmät näyttävät istuntotunnukset, kirjautumisnimet, suorittimen ajan ja estotiedot. Niistä puuttuu kuitenkin DMV:iden tai Activity Monitorin tarjoamat yksityiskohtaiset tiedot. Ne ovat hyödyllisimpiä nopeissa tarkistuksissa, kun tarvitset nopeasti vain vähän tietoa.
5.3.2 Muita hyödyllisiä järjestelmämenettelyjä
Lisävalvontajärjestelmän menettelyihin kuuluvat:
- sp_lock: Näyttää lukitustiedot (vanhentunut; käytä sys.dm_tran_locks-tiedostoa).
- sp_monitori: Näyttää tilastoja aiheesta SQL Server aktiivisuutta.
- sp_help: Näyttää objektien määritelmät ja metatiedot.
- DBCC SQLPERF: Näyttää tapahtumalokin tilankäytön ja odotustilastot.
5.4 Mukautettujen valvontaskriptien luominen
Ympäristöissä, jotka vaativat Activity Monitorin tarjoamien ominaisuuksien lisäksi erityistä valvontaa, voit rakentaa mukautettuja ratkaisuja DMV-laitteiden avulla.
5.4.1 Täydellinen aktiviteettimonitoria vastaava komentosarja
Tässä on kattava skripti, joka toistaa useimmat Aktiviteettien valvonnan toiminnot:
-- 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 Valvonnan automatisointi SQL Agent -töiden avulla
Voit ajoittaa mukautettuja valvontaskriptejä käyttämällä SQL Server Agentti:
- Luo taulukko seurantatulosten tallentamiseksi.
- Muokkaa valvontaskriptiäsi lisätäksesi tulokset tähän taulukkoon.
- In SQL Server Management Studio, laajenna SQL Server Agentti Objektienhallinnassa.
- Napsauta hiiren kakkospainikkeella Työpaikat ja valitse Uusi työ.
- Määritä työ suorittamaan valvontaskriptisi säännöllisin väliajoin.
- Määritä hälytyksiä tai raportteja kerättyjen tietojen perusteella.
Tämä lähestymistapa mahdollistaa historiallisen seurannan ja trendianalyysin, jota Aktiviteettien valvonta ei tarjoa.
6. Aktiivisuusmonitorin rajoitukset ja huomioitavat asiat
Vaikka Aktiviteettien valvonta on arvokas työkalu, sen rajoitusten ymmärtäminen auttaa sinua käyttämään sitä asianmukaisesti ja täydentämään sitä tarvittaessa muilla työkaluilla.
6.1 Aktiivisuusmonitorin yleiskustannusten ymmärtäminen
Aktiviteettien valvonta ei ole ilmainen – se kuluttaa palvelinresursseja tiedon keräämiseen ja näyttämiseen. Tämän lisäkuormituksen ymmärtäminen auttaa sinua käyttämään sitä vastuullisesti.
6.1.1 Vaikutus palvelinresursseihin
Aktiviteettien valvonta suorittaa kyselyitä järjestelmän DMV-taulukoille aina päivityksen yhteydessä. Nämä kyselyt kuluttavat suorittimen tehoa, luovat loogisia lukuja ja voivat pitää järjestelmätaulukoissa lyhyitä lukituksia. Kiireisillä palvelimilla tämä lisäkuormitus voi vaikuttaa suorituskykyyn.
Prosessit- ja Viimeaikaiset kalliit kyselyt -ruudut ovat erityisen kalliita, koska niiden on tarkistettava mahdollisesti suuriakin DMV-tiedostoja ja välimuistitaulukoita. Palvelimilla, joilla on tuhansia välimuistissa olevia kyselysuunnitelmia, Viimeaikaisten kalliiden kyselyiden päivittäminen voi kestää useita sekunteja.
Microsoftin dokumentaatio varoittaa, että alle 10 sekunnin päivitysvälit voivat vaikuttaa huomattavasti palvelimen suorituskykyyn, erityisesti jo ladatuissa järjestelmissä.
6.1.2 Päivitysvälin parhaat käytännöt
Valitse tilanteeseesi sopivat päivitysvälit:
- 1-5 sekuntia: Vain kriittisten ongelmien välittömään vianmääritykseen kevyesti kuormitetuilla palvelimilla. Älä jätä Järjestelmänvalvontaa päälle näinä aikaväleinä.
- 10 sekuntia (oletus): Kohtuullinen useimpiin vianmääritystilanteisiin ja yleiseen valvontaan.
- 30-60 sekuntia: Parempi valinta raskaasti kuormitetuille tuotantopalvelimille tai pitkiä aikoja valvottaville palvelimille.
- Vain manuaalinen päivitys: Tilanteissa, joissa haluat tarkistaa nykyisen tilan satunnaisesti ilman jatkuvaa kyselyä.
Sulje aina Aktiviteettien valvonta, kun olet lopettanut tutkimisen. Älä jätä sitä jatkuvasti päälle, etenkään useiden eri käyttäjien toimintojen vuoksi.
6.2 Odotustyyppien ryhmittelyongelmat
Aktiviteettien valvonnan lähestymistapa odotusten luokitteluun, vaikka se yksinkertaistaakin näkymää, voi peittää tärkeitä diagnostiikkatietoja.
6.2.1 Miten aktiivisuuden valvontaryhmät odottavat
SQL Server seuraa satoja erilaisia odotustyyppejä, joista jokainen ilmaisee tietyn resurssin tai tilan. Aktiviteettien valvonta ryhmittelee ne laajoihin luokkiin, kuten "Puskurin lukitus", "Lukitus" ja "Muisti".
Esimerkiksi ”Puskurin lukitus” -kategoriaan kuuluvat PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX ja useita muita erityisiä odotustyyppejä. Vaikka ne kaikki liittyvät sivun käyttöön, niillä on erilaisia syitä ja ratkaisuja.
Microsoft ei dokumentoi tarkalleen, mitkä odotustyypit vastaavat mitäkin luokkia, mikä vaikeuttaa näkemiesi osuuksien ymmärtämistä.
6.2.2 Puuttuvien odotustyyppien
Aktiviteettien valvonta ei näytä kaikkia odotustyyppejä. Merkittävintä on, että se usein jättää pois CXPACKET-odotukset, jotka osoittavat rinnakkaisen kyselyn suorituksen. CXPACKET-odotukset ovat yleisiä eivätkä yleensä ongelmallisia, mutta niiden läsnäolon tietäminen auttaa ymmärtämään työkuorman ominaisuuksia.
Kun Activity Monitor näyttää "Buffer Latch" -ominaisuuden suurimpana odotusarvona, mutta muut työkalut näyttävät CXPACKETin hallitsevana ominaisuutena, ristiriita johtuu Activity Monitorin suodatus- ja ryhmittelylogiikasta.
6.2.3 Miksi tietyillä odotustyypeillä on merkitystä
Tietyn odotustyypin tunteminen on tärkeää vianmäärityksessä:
- SIVUJEN_KÄYTTÖ: Viittaa usein tempdb-tiedostojen ristiriitaan varaussivuilla. Ratkaisuun kuuluu useampien tempdb-datatiedostojen lisääminen.
- SIVU_KERROS: Saattaa viitata käyttäjätaulukoiden kuumiin sivuihin. Ratkaisuun kuuluu osiointi tai indeksien uudelleenjärjestely.
- SIVUJEN LUKU: Yleinen päivitysten aikana. Saattaa viitata normaaliin toimintaan ongelman sijaan.
Aktiviteettien valvonta ryhmittelee kaikki nämä "puskurin lukituksen" alle, mikä vaikeuttaa diagnoosin tekemistä. Työkalut, kuten sp_WhoIsActive ja DMV-kyselyt, näyttävät tiettyjä odotustyyppejä.
6.3 Tietojen tarkkuus ja ajantasaisuus
Activity Monitor tarjoaa lähes reaaliaikaisen näkymän, mutta sana "lähes" on tässä avainsana. Sen tiedonkeruumenetelmän ymmärtäminen auttaa sinua tulkitsemaan tuloksia oikein.
6.3.1 Tilannekuva vs. jatkuva monitorointi
Aktiviteettien valvonta näyttää kullakin päivitysvälillä otetut tilannevedokset. Tilannevedosten välillä tapahtuvia tapahtumia ei tallenneta. Jos kysely suoritetaan 2 sekunnin ajan ja päivität 10 sekunnin välein, saatat nähdä sen kerran tai et ollenkaan ajoituksesta riippuen.
Tämä tarkoittaa, että Järjestelmänvalvonta löytää parhaiten pysyviä ongelmia (pitkät jumiutumiset, jatkuvasti korkea suorittimen käyttöaste), mutta saattaa jäädä huomaamatta ohimeneviä ongelmia (lyhyitä umpikujia, satunnaisia kyselypiikkejä).
6.3.2 Yhdistämis- ja otantamenetelmät
Viimeaikaiset kalliit kyselyt -ruutu näyttää tiedot, jotka on koottu siitä lähtien, kun kyselysuunnitelmat ovat siirtyneet välimuistiin. Kaksi identtistä kyselyä, joilla on eri parametriarvot, näkyvät yhtenä rivinä, jos ne jakavat saman suunnitelman. Tämä yhdistäminen voi peittää tiettyjen parametriyhdistelmien ongelmat (parametrien nuuhkimiseen liittyvät ongelmat).
Resurssien odotusajat -ruutu laskee odotusaikoja vertailemalla tilannekuvia. Jos odotustilastot nollautuvat tilannekuvien välillä (harvinaista, mutta mahdollista), lasketut hinnat voivat olla virheellisiä.
6.4 Milloin Aktiivisuusmonitoria EI SAA käyttää
Activity Monitor ei sovellu kaikkiin valvontatilanteisiin. Tunnista, milloin vaihtoehtoiset työkalut ovat parempia vaihtoehtoja.
6.4.1 Historiallisen analyysin vaatimukset
Aktiviteettien valvonta näyttää vain nykyisen tai viimeaikaisen toiminnan. Se ei tallenna historiatietoja. Jos sinun on analysoitava trendejä päivien tai viikkojen ajalta, verrattava nykyistä suorituskykyä lähtötilanteisiin tai luotava raportteja suorituskykymalleista, Aktiviteettien valvonta ei riitä.
Käytä historiallisessa analyysissä SQL Serversisäänrakennettu suorituskyvyn hallintapaneeli, laajennetut tapahtumat tiedostokohteilla tai kolmannen osapuolen valvontaratkaisut.
6.4.2 Yksityiskohtaisten odotustilastojen tarpeet
Kun tarvitset tarkkoja odotustyyppitietoja edistynyttä säätöä varten, Activity Monitorin ryhmittely ja suodatus tekevät siitä riittämätöntä. Käytä sen sijaan suoraan DMV-kyselyitä tai sp_WhoIsActive-metodia.
Kattavan odotustilastoanalyysin saat tekemällä kyselyn suoraan sys.dm_os_wait_stats-tiedostoon ja suodattamalla vaarattomat odotusajat manuaalisesti pois.
6.4.3 Tuotantopalvelimen huomioitavaa
Raskaan kuormituksen alaisina olevilla tuotantopalvelimilla Activity Monitorin ylimääräinen kuormitus voi olla ongelmallinen. Useiden tietokannan ylläpitäjien ei tulisi käyttää Activity Monitoria samanaikaisesti samalla palvelimella.
Tuotannon valvontaa varten kannattaa harkita kevyitä vaihtoehtoja, kuten ajoitettuja DMV-tilannevedoksia, jotka on tallennettu valvontatietokantaan, tai käyttää vain luku -reititystä toissijaisten replikoiden valvontaan Always On -kokoonpanoissa.
7. Aktiviteettiseurannan käytön parhaat käytännöt
Parhaiden käytäntöjen noudattaminen varmistaa, että saat parhaan hyödyn Aktiviteettien valvonnasta ja minimoit palvelimiisi kohdistuvat negatiiviset vaikutukset.
7.1 Milloin aktiivisuusmonitoria käytetään
Aktiviteettien valvonta loistaa tietyissä tilanteissa. Käytä sitä silloin, kun sen vahvuudet vastaavat tarpeitasi.
7.1.1 Reaaliaikaiset suorituskykyongelmat
Aktiviteettien valvonta on ihanteellinen, kun käyttäjillä on parhaillaan ongelmia ja sinun on diagnosoitava ne välittömästi. Reaaliaikainen näkymä auttaa sinua näkemään, mitä tapahtuu juuri nyt.
Kun saat ilmoituksen, että ”sovellus on hidas”, Aktiviteettien valvonnan avaamisen tulisi olla yksi ensimmäisistä vaiheistasi. Voit nopeasti selvittää, onko tietokanta varattu, estetty vai käyttämätön.
7.1.2 Sovelluksen hidastumisen tutkiminen
Kun tietty sovellus lakkaa vastaamasta, Järjestelmävalvonta auttaa sinua selvittämään, ovatko syynä tietokantaongelmat. Suodata Prosessit-ruutu sovelluksen nimen mukaan nähdäksesi vain kyseisen sovelluksen tietokantatoiminnan.
Jos sovellus ei osoita tietokanta-aktiivisuutta, vaikka käyttäjät raportoivat ongelmista, ongelma on muualla pinossa. Jos näet laajoja estoja tai kalliita kyselyitä, olet löytänyt syyllisen.
7.1.3 Pikaiset kuntotarkastukset
Aktiviteettien valvonta tarjoaa erinomaisen kojelaudan nopeisiin kuntotarkistuksiin rutiinihallinnon aikana. Avaa se, vilkaise yleiskatsauskaavioita ja varmista, ettei mikään näytä poikkeavalta.
Tämä pintapuolinen tarkistus vie vain muutaman sekunnin ja voi paljastaa ongelmat ennen kuin niistä tulee vakavia. Tee siitä osa päivittäistä rutiiniasi.
7.2 Optimaaliset kokoonpanoasetukset
Aktiviteettien valvonnan asianmukainen määrittäminen parantaa sekä sen hyödyllisyyttä että resurssien tarvetta.
7.2.1 Suositellut päivitysvälit
Sovita päivitysväli tarkoitukseesi:
- Aktiivinen vianmääritys: 10 sekuntia tarjoaa hyvän vasteajan kohtuullisella lisätyömäärällä.
- Laajennettu seuranta: 30–60 sekuntia vähentää palvelimen vaikutusta pidempien tarkkailujaksojen aikana.
- Kriittisen ongelman diagnoosi: 5 sekuntia antaa suuren tarkkuuden, kun jokainen sekunti on tärkeä, mutta käytä sitä lyhyesti.
- Säännölliset terveystarkastukset: Manuaalinen päivitys (1 tunnin välein), kun et katso aktiivisesti.
Muista sulkea Aktiviteettien valvonta, kun olet valmis. Pitkän aikavälin asettaminen ja sen unohtaminen tuhlaa palvelinresursseja.
7.2.2 Suodatusstrategiat
Käytä suodattimia keskittyäksesi olennaiseen tietoon ja vähentääksesi kognitiivista kuormitusta:
- Suodata prosessit seuraavien mukaan: tietokanta nähdäksesi vain tiettyihin tietokantoihin kohdistuneen toiminnan.
- suodata Kirjaudu tietyn käyttäjän toiminnan seuraamiseksi.
- suodata Tehtävän tila = KÄYNNISSÄ piilottaaksesi käyttämättömät istunnot.
- suodata Hakemus eristääkseen liikenteen tietyistä ohjelmista.
- Näytä vain Ei-tyhjät-kohteet Estetty nähdä vain estäviä tilanteita.
7.2.3 Sarakkeiden valinta ja lajittelu
Kehitä systemaattinen lähestymistapa Activity Monitor -tietojen tarkasteluun:
- Aloita yleiskatsauksella: Tarkista kaavioista ilmeiset piikit tai poikkeamat.
- Tarkista prosessit estojen varalta: Lajittele istuntotunnuksen mukaan ja etsi sitten Esto-arvot.
- Tarkista resurssien odotusajat: Lajittele kumulatiivisen odotusajan mukaan resurssien pullonkaulojen tunnistamiseksi.
- Analysoi kalliita kyselyitä: Lajittele eri mittareiden (suoritin, suoritukset, lukukerrat) mukaan löytääksesi erityyppisiä ongelmia.
- Vahvista I/O-paneelilla: Vahvista, korreloivatko I/O-intensiiviset kyselyt suuren levyaktiivisuuden kanssa.
7.3 Integrointi muiden työkalujen kanssa
Aktiviteettien valvonta toimii parhaiten osana laajempaa työkalupakkia kuin itsenäisenä ratkaisuna.
7.3.1 Käyttö yhdessä SQL Server Profiler
Aktiivisuusmonitori ja SQL Server Profilointiohjelmat täydentävät toisiaan hyvin. Kun tunnistat ongelmallisen istunnon Aktiviteettien valvonnassa, napsauta sitä hiiren kakkospainikkeella ja valitse Jäljitysprosessi sisään SQL Server Profiler.
Tämä käynnistää Profilerin, jossa on suodattimet valmiiksi määritettynä tallentamaan vain kyseisen istunnon aktiviteetit. Näet suoritettujen lausekkeiden koko sarjan, ajoitustiedot ja virheilmoitukset – tietoja, joita Aktiviteettien valvonta ei tarjoa.
Lisätietoja SQL Server Profilointiominaisuudet ja edistyneet jäljitystekniikat, katso kattava SQL Server Profilointiopas.
7.3.2 Täydentäminen laajennetuilla tapahtumilla
Extended Events tarjoaa vähän ylimääräistä kuormitusta vaativaa ja yksityiskohtaista valvontaa, joka tallentaa tiedot, joita Aktiviteettien valvonta ei huomaa. Luo Extended Event -istuntoja seurataksesi tiettyjä tapahtumia, kuten lukkiutumia, pitkään suoritettuja kyselyitä tai liiallisia uudelleenkääntämisiä.
Käytä Aktiviteettien valvontaa välittömään tutkimiseen ja Laajennetut tapahtumat -työkalua jatkuvaan seurantaan ja historialliseen analyysiin. Nämä kaksi työkalua vastaavat eri tarpeisiin.
Lisätietoja SQL Server Laajennetut tapahtumaominaisuudet ja edistyneet valvontatekniikat, katso kattava SQL Server Laajennettu tapahtumaopas.
7.3.3 Kolmannen osapuolen valvontaratkaisut
Kaupalliset työkalut, kuten SolarWinds Database Performance Analyzer, Redgate SQL Monitor ja Quest Spotlight, tarjoavat ominaisuuksia, joita Activity Monitorista puuttuu: hälytykset, historialliset trendit, kapasiteetin suunnittelu ja automatisoitu diagnostiikka.
Nämä työkalut ovat arvokkaita lisäyksiä Aktiviteettien valvontaan, eivät korvaa sitä. Aktiviteettien valvonta on edelleen hyödyllinen nopeisiin tarkistuksiin ja tutkimuksiin, vaikka käytettävissä olisi kehittyneitä valvontatyökaluja.
7.4 yleistä vältettävää virhettä
Yleisten Aktiviteettien valvonnan virheiden ymmärtäminen auttaa sinua käyttämään sitä tehokkaammin.
7.4.1 Aktiviteettien valvonnan pitäminen käynnissä jatkuvasti
Yleisin virhe on avata Järjestelmänvalvoja ja jättää se päälle loputtomiin. Tämä tuhlaa palvelinresursseja eikä tarjoa juurikaan lisäarvoa, koska et tarkkaile aktiivisesti.
Sulje Aktiviteettien valvonta, kun et käytä sitä aktiivisesti. Jos tarvitset jatkuvaa valvontaa, ota sen sijaan käyttöön asianmukainen valvontaratkaisu, jossa on ajoitettu tiedonkeruu.
7.4.2 Liiallinen luottaminen pelkästään aktiivisuusmonitoriin
Aktiviteettien valvonta tarjoaa yhden näkökulman palvelimen kuntoon. Älä luota yksinomaan siihen. Täydennä sitä Windowsin suorituskyvyn valvonnalla käyttöjärjestelmätason mittareita varten, laajennetuilla tapahtumilla yksityiskohtaista seurantaa varten ja suoritussuunnitelman analysoinnilla kyselyiden hienosäätöä varten.
Aktiviteettien valvonta auttaa sinua tunnistamaan ongelmia, mutta niiden ratkaiseminen vaatii usein lisätyökaluja ja syvällisempää analyysia.
Lisätietoja SQL Server suorituskykymonitori meidän täydellinen opas.
7.4.3 Historiallisten trendien huomiotta jättäminen
Aktiviteettien valvonta näyttää nykyisen tilan, mutta suorituskykyongelmilla on usein näkyviä kaavoja vain ajan kuluessa. Ota käyttöön historiallisen tiedon kerääminen, jotta voit verrata nykyisiä mittareita lähtötilanteisiin ja tunnistaa trendejä.
Ilman historiallista kontekstia et ehkä huomaa, että tämän päivän "normaali" suorittimen käyttöaste on 30 % korkeampi kuin viime kuun lähtötaso, mikä viittaa asteittaiseen heikkenemiseen.
8. Aktiviteettien valvonnan ongelmien vianmääritys
Aktiviteettien valvonta itsessään kohtaa joskus ongelmia. Näiden ongelmien vianmäärityksen tunteminen estää turhautumisen.
8.1 Aktiivisuusmonitori ei avaudu tai ei näytä tietoja
Kun Järjestelmän valvonta avautuu, mutta näyttää tyhjiä ruutuja tai ei avaudu ollenkaan, siihen voi olla useita tekijöitä.
8.1.1 Käyttöoikeusongelmat
Yleisin syy Aktiviteettien valvonnan ongelmiin ovat riittämättömät käyttöoikeudet. Tarkista ja ratkaise seuraavasti:
- Tarkista palvelintason käyttöoikeutesi:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Jos rivejä ei palauta, sinulla ei ole VIEW SERVER STATE -käyttöoikeutta.
- Pyydä palvelimen ylläpitäjää myöntämään se:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - Sulje ja avaa uudelleen Aktiviteettien valvonta, kun käyttöoikeudet on myönnetty.
8.1.2 Versioiden yhteensopivuusongelmat
Käyttämällä vanhaa versiota SQL Server Management Studio yhdistääksesi uudempaan SQL Server versio voi aiheuttaa Aktiviteettien valvonnan virheitä. Työkalu ei välttämättä ymmärrä uusia odotustyyppejä tai järjestelmänäkymän sarakkeita.
Käytä aina SSMS-versiota, joka vastaa omaasi tai on uudempi. SQL Server versio. Microsoft tarjoaa uusimman SSMS:n ilmaiseksi ladattavana versiona, joka on erillinen SQL Server itse.
8.1.3 Palomuuri- ja verkko-ongelmat
Aktiviteettien valvonta vaatii yhteyden SQL Server instanssi vakioporteissa (oletusarvoisesti 1433). Jos saat yhteyden Object Explorerin kautta, mutta Activity Monitor epäonnistuu, palomuurisäännöt saattavat estää tiettyjä yhteyksiä.
Varmista, että asiakkaasi pääsee paikalle SQL Server kone kaikissa tarvittavissa porteissa. Tarkista sekä Windowsin palomuuri että kaikki asiakkaan ja palvelimen väliset verkkopalomuurit.
8.2 Aktiivisuusmonitori pysyvästi keskeytetty
Yleinen ongelma, erityisesti SQL Server Vuonna 2019 Aktiviteettien valvonta käynnistyy keskeytetyssä tilassa eikä suostu jatkumaan.
8.2.1 Taukotilan ymmärtäminen
Kun Toimintojen valvonta on keskeytetty, kaikissa ruuduissa näkyy tila ”Keskeytetty”, ja jatkamispainike ei välttämättä toimi. Tämä estää sinua näkemästä palvelimen toimintaa.
Keskeytetty tila johtuu yleensä käyttöoikeusongelmista, etäyhteysrajoituksista tai SSMS-versiovirheistä eikä tahallisesta keskeytystoiminnosta.
8.2.2 Yleiset syyt
Aktiviteettien valvonta voi siirtyä pysyvästi keskeytettyyn tilaan seuraavista syistä:
- Puuttuu NÄYTÄ PALVELIN TILA -käyttöoikeus uudemmissa ruuduissa, jotka on lisätty viime aikoina SQL Server versiot
- Etäyhteydet poistettu käytöstä SQL Server esimerkki
- Tiettyjen järjestelmäkyselyiden todennusvirheet
- Virheitä tietyissä SSMS-koontiversioissa, erityisesti versioissa 18.0–18.3
- Asiakkaan ja palvelimen väliset yhteysongelmat
8.2.3 Ratkaisun vaiheet
Aktiviteettien valvonnan keskeytettyyn tilaan liittyvien ongelmien ratkaiseminen:
- Päivitä SSMS: Lataa ja asenna uusin SQL Server Management Studio -versio Microsoftin verkkosivustolta. Useita keskeytettyyn tilaan liittyviä virheitä on korjattu myöhemmissä julkaisuissa.
- Tarkista käyttöoikeudet: Varmista, että sinulla on PALVELIMEN TILAN NÄYTTÖ- ja MÄÄRITELMÄN NÄYTTÖ -oikeudet.
- Tarkista etäyhteydet: Varmista, että SQL Server instanssi sallii etäyhteydet:
EXEC sp_configure 'remote access';Jos arvo on 0, pyydä järjestelmänvalvojaa ottamaan se käyttöön.
- Käynnistä SSMS uudelleen: Joskus riittää, että suljet kaikki ikkunat ja käynnistät uudelleen SQL Server Management Studio ratkaisee ongelman.
- Yhdistä Windows-todennuksella: Jos käytät SQL-todennusta, kokeile Windows-todennusta, sillä se joskus ohittaa todennukseen liittyvät keskeytysongelmat.
8.3 Suorituskykyongelmat Aktiviteettien valvontaa käytettäessä
Jos Aktiviteettien valvonta itsessään hidastuu tai aiheuttaa palvelimen suorituskyvyn heikkenemistä, tarvitaan säätöjä.
8.3.1 Valvontakustannusten vähentäminen
Aktiviteettien valvonnan vaikutuksen minimoimiseksi:
- Lisää päivitysväliä 30 sekuntiin tai 1 minuuttiin.
- Sulje ruudut, joita et käytä aktiivisesti, napsauttamalla kutistuspainiketta.
- Kun ruudut on pienennetty, Järjestelmänvalvonta ei kysele niiden tietoja.
- Vältä useiden Activity Monitor -instanssien suorittamista samanaikaisesti.
- Sulje Aktiviteettien valvonta kokonaan, kun et aktiivisesti tutki ongelmia.
8.3.2 Vaihtoehtoiset kevyet seurantamenetelmät
Jos Aktiviteettien valvonta on liian resursseja vaativaa ympäristöllesi, harkitse vaihtoehtoja:
- Kysele ajoneuvohallintokeskuksista suoraan: Kirjoita erityisiä T-SQL-kyselyitä, jotka hakevat vain tarvitsemasi tiedot.
- Käytä sp_WhoIsActive-metodia: Tämä tallennettu proseduuri on erittäin optimoitu ja sen käyttökustannukset ovat tyypillisesti pienemmät kuin Activity Monitorilla.
- Otannan toteuttaminen: Aikatauluta SQL Agent -töitä, jotka tallentavat DMV-datan tilannevedoksia säännöllisin väliajoin ja tallentavat tulokset taulukoihin myöhempää analyysia varten.
- Toissijaisten replikoiden valvonta: In Aina päällä olevat saatavuusryhmät, suorita Aktiviteettien valvonta luettavassa toissijaisessa palvelimessa ensisijaisen palvelimen sijaan.
8.4 Virheelliset tai puuttuvat tiedot
Järjestelmän valvonta näyttää joskus tietoja, jotka vaikuttavat virheellisiltä tai puutteellisilta.
8.4.1 Tietojen varmentaminen ajoneuvohallintokeskuksilla
Kun Aktiviteettien valvonnan tulokset vaikuttavat epäilyttäviltä, tarkista ne kyselemällä suoraan pohjana olevista DMV:istä. Jos esimerkiksi Prosessit-ruudussa ei näy estoa, mutta käyttäjät ilmoittavat siitä, tee kysely:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Jos tämä kysely näyttää eston, jonka Aktiviteettien valvonta on ohittanut, olet vahvistanut näyttöongelman.
8.4.2 Tietojen päivitysajoituksen ymmärtäminen
Muista, että Toimintojen valvonta näyttää tilannevedoksia. Kysely, joka on suoritettu päivitysvälien välillä, ei näy Viimeisimmät kalliit kyselyt -luettelossa, ellei sen suoritussuunnitelmaa säilytetä välimuistissa.
Vastaavasti Resurssien odotus -ruudun odotustilastot heijastavat kertyneitä tietoja edellisestä tilannevedoksesta lähtien. Nopeasti muuttuvat työkuormat voivat näyttää erilaisia kaavoja jokaisen päivityksen jälkeen.
9. Edistyneet aktiivisuuden seurantatekniikat
Kokeneet tietokannan ylläpitäjät käyttävät Activity Monitoria kehittyneillä tavoilla maksimaalisen diagnostisen arvon saamiseksi.
9.1 Useiden ikkunoiden yhdistäminen perussyyanalyysiä varten
Aktiviteettien valvonnan todellinen teho tulee esiin, kun korreloit useiden ikkunoiden tietoja ymmärtääksesi monimutkaisia suorituskykyongelmia.
9.1.1 Odotusaikojen korrelointi prosessien kanssa
Kun Resurssien odotusajat -ruudussa näkyy luokassa pitkiä odotusaikoja, voit tunnistaa Prosessit-ruudun avulla, mitkä istunnot kokevat näitä odotusaikoja:
- Huomaa odotusluokka, jolla on korkea kumulatiivinen odotusaika (esim. ”Lukko”).
- Vaihda Prosessit-ruutuun.
- Järjestä Odotustyyppi ryhmitellä istuntoja niiden nykyisen odotusajan mukaan.
- Etsi istuntoja, joissa näkyy odotustyyppejä ongelmakategoriassa.
- Tutki näitä istuntoja varten Odota resurssi saraketta nähdäksesi, mitkä tietokantaobjektit ovat kyseessä.
- Napsauta hiiren kakkospainikkeella ja valitse Lisätiedot nähdäksesi kyselytekstin.
Tämä korrelaatio auttaa sinua siirtymään tilanteesta "meillä on lukitusodotuksia" tilanteeseen "tämä tietty kysely odottaa lukituksia tässä taulukossa".
9.1.2 Kalliiden kyselyiden linkittäminen I/O-ongelmiin
Kun datatiedoston I/O-ruudussa näkyy paljon levyaktiivisuutta tietyssä tietokannassa:
- Huomioi, millä tietokantatiedostoilla on korkea luku- tai kirjoitusnopeus Mt/s.
- Vaihda viimeaikaisiin kalliisiin kyselyihin.
- Järjestä Fyysisiä lukuja/sekunti tunnistaakseen kyselyt, jotka lukevat paljon levyltä.
- Suodata tai tunnista visuaalisesti tietokannassa suoritettavat kyselyt, joilla on paljon I/O-arvoja.
- Tarkista näiden kyselyiden suoritussuunnitelmat taulukkoskannausten tai puuttuvien indeksien varalta, jotka aiheuttavat liiallista I/O:ta.
Tämä usean ruudun analyysi yhdistää oireet (suuri levyn I/O) syihin (tietyt tehottomat kyselyt).
9.2 Aktiviteettien valvonnan käyttö kapasiteetin suunnitteluun
Vaikka Aktiviteettien valvonta ei tallenna historiatietoja, voit käyttää sitä strategisesti kapasiteettisuunnittelun havaintoihin.
9.2.1 Huippukäyttömallien tunnistaminen
Seuraa palvelimen toimintaa eri vuorokaudenaikoina käyttömallien tunnistamiseksi:
- Avaa Aktiviteettien valvonta tunnettujen ruuhka-aikojen aikana.
- Huomaa % Processor Time -käyrän huippuarvot.
- Kirjaa ylös odottavien tehtävien enimmäismäärä.
- Tarkkaile eräpyyntöjä sekunnissa ruuhka-aikoina.
- Dokumentoi kiireisimmät tietokannat Prosessit-ruudussa.
- Toista vertailua varten ruuhka-aikojen ulkopuolella.
Jos prosessorin käyttö ruuhka-aikaan jatkuvasti ylittää 80 %, lähestyt prosessorin kapasiteettirajoja. Vastaavasti kasvavat odotusmäärät osoittavat kasvavaa resurssikilpailua.
9.2.2 Resurssien trendianalyysi
Vaikka Aktiviteettien valvonta näyttää nykyisen tilan, voit käyttää sitä trendien satunnaistarkistukseen tallentamalla tärkeimmät mittarit ajan kuluessa:
- Ota kuvakaappauksia Yleiskatsaus-ruudusta samaan aikaan joka päivä
- Kirjaa huippuarvot jokaisesta kaaviosta
- Vertaile viikkoja kesken tunnistaaksesi kasvutrendit
- Tarkkaile keskimääräisen prosessoriajan tai I/O-nopeuksien asteittaista kasvua
Tämä manuaalinen trendien seuranta täydentää kehittyneempiä seurantaratkaisuja ja auttaa perustelemaan kapasiteetin laajentamista.
9.3 Suorituskyvyn vertailuarvojen dokumentointi
Perustason suorituskykymittareiden määrittäminen auttaa tunnistamaan, milloin suorituskyky heikkenee.
9.3.1 Perustason mittareiden tallentaminen
Dokumentoi Aktiviteettien valvonnan mittarit tunnetusti hyvän suorituskyvyn aikana:
- Avaa Aktiviteettien valvonta normaalin liiketoiminnan aikana (ei ruuhka-aikoina tai niiden ulkopuolella).
- Tietueiden yleiskatsaus -ruudun arvot:
- Tyypillinen prosessorin aikaväli (%)
- Keskimääräinen odotustehtävien määrä
- Normaali tietokannan I/O-nopeus
- Tyypilliset eräpyynnöt sekunnissa
- Huomaa Resurssien odotusajat -ruudun luokat, jotka näyttävät pisimmän odotusajan.
- Dokumentoi aktiivisten prosessien lukumäärä tyypillisesti Prosessit-ruudussa.
- Tallenna edustavat kyselyn suoritusmittarit viimeaikaisista kalliista kyselyistä.
Säilytä tämä perusdokumentaatio myöhempää tarvetta varten suorituskykyongelmia tutkiessasi.
9.3.2 Nykyisen ja lähtötason suorituskyvyn vertailu
Kun suorituskykyongelmia ilmenee, vertaa nykyisiä Aktiviteettimonitorin lukemia dokumentoituun lähtötasoon:
- Onko prosessorin aika merkittävästi lähtötasoa pidempi? Keskity prosessoritehokkaisiin kyselyihin.
- Ovatko odotustehtävät 2–3 kertaa perustasoa suurempia? Tutki resurssien odotusaikoja.
- Onko I/O huomattavasti korkeampi? Tarkista datatiedoston I/O-ruutu ja kalliit kyselyt.
- Onko eräpyyntöjen määrä ruuhka-aikoina perustasoa pienempi? Etsi estoja tai yhteysongelmia.
Tämä vertailu auttaa sinua tunnistamaan, mikä on muuttunut, ja keskittämään vianmääritystoimet asianmukaisesti.
9.4 Mukautettujen valvontatyönkulkujen luominen
Kehitä systemaattisia työnkulkuja yleisille tutkimusskenaarioille varmistaaksesi perusteellisen ja toistettavan analyysin.
9.4.1 Vaiheittainen tutkintaprosessi
Kun käyttäjät ilmoittavat suorituskykyongelmista, noudata johdonmukaista työnkulkua:
- Nopea terveystarkastus: Avaa Aktiviteettien valvonta ja tarkista Yleiskatsaus-ruudun kaaviot ilmeisten poikkeavuuksien varalta.
- Tarkista esto: Laajenna Prosessi-ruutu ja suodata Estetty-sarakkeessa olevat Ei-tyhjät-arvot.
- Tunnista resurssien kilpailutilanne: Resurssien odotusajat -ruutu lajiteltuna odotusajan mukaan.
- Etsi kalliita kyselyitä: Tutki viimeaikaisia kalliita kyselyitä lajiteltuna ensin suorittimen, sitten suoritusten ja lopuksi lukumäärien mukaan.
- Korreloi I/O-kuvioita: Ristiviittaa kalliisiin kyselyihin datatiedostojen I/O-ruudun toimintojen avulla.
- Asiakirjan löydöt: Ota kuvakaappauksia ja tallenna asiaankuuluvat istuntotunnukset, odotustyypit ja kyselyn tiedot.
- Syväsukellus: Käytä Profiler-jäljityksiä, suoritussuunnitelma-analyysia ja DMV-kyselyitä tunnistettujen ongelmien yksityiskohtaiseen tutkimiseen.
9.4.2 Eskalointikriteerit
Määritä kriteerit sille, milloin ongelmia siirretään eteenpäin ja milloin tutkimuksia jatketaan:
- Eskaloi asia välittömästi: Estoketjut kestävät yli 5 minuuttia, prosessorin käyttöaika 100 % yli 2 minuuttia, kriittiset järjestelmäprosessit ovat KESKEYTETYSSÄ tilassa.
- Eskaloi asia analyysin avulla: Toistuvat kalliit kyselyt, jotka kuluttavat yli 50 % suorittimen tehosta, jatkuvasti korkeat I/O-vasteajat > 50 ms, muistin myöntämispyynnöt epäonnistuvat toistuvasti.
- Tutki asiaa lisää: Tilapäiset odotusajat, jotka ratkaistaan minuuteissa, kyselyt, joiden suunnitelmat eivät ole optimaalisia, mutta suorituskyky hyväksyttävä, pienet estot, jotka kestävät alle 30 sekuntia.
10. Aktiivisuusmonitori eri tilanteissa SQL Server versiot
Aktiivisuusmonitori on kehittynyt SQL Server versioita, ja jokainen julkaisu tuo mukanaan parannuksia ja toisinaan uusia ongelmia.
10.1 Aktiivisuusmonitori sisään SQL Server 2008 ja uudemmat
SQL Server Vuonna 2008 esiteltiin moderni Activity Monitor -muotoilu, joka on pysynyt suurelta osin muuttumattomana tähän päivään asti.
10.1.1 Uudet ominaisuudet, jotka on esitelty kohdassa SQL Server 2008
SQL Server Vuoden 2008 Activity Monitorin uudelleensuunnittelu toi mukanaan merkittäviä parannuksia:
- Graafinen kojelauta, jossa on reaaliaikaisia kaavioita yleiskatsausruudussa
- Laajennettavan/supistettavan ruudun käyttöliittymä korvaa vanhan pelkän ruudukkonäkymän
- Viimeaikaiset kalliit kyselyt -ruutu, jossa näkyy koostettuja kyselyn suorituskykytietoja
- Tiedostokohtaisen levytoiminnan valvonta tiedostokohtaisesti tiedostokohtaisen I/O-ruudun avulla
- Parannettu resurssien odotusruutu, jossa on odotusluokittelu
- Napsauta hiiren kakkospainikkeella pikavalikoita prosessitoimintoihin, kuten istuntojen lopettamiseen ja Profilerin käynnistämiseen
- Konfiguroitavat päivitysvälit 1 sekunnista 1 tuntiin
Nämä muutokset muuttivat Aktiviteettien valvonnan yksinkertaisesta prosessiluettelosta kattavaksi valvontapaneeliksi.
10.1.2 Muutokset verrattuna SQL Server 2005
SQL Server Vuoden 2005 Activity Monitor oli paljon rajoitetumpi:
- Käytetään Object Explorerin Hallinta-kansion kautta työkalupalkin sijaan
- Yksittäinen ruudukko, joka näyttää prosessiluettelon perustiedoilla
- Ei graafisia kaavioita tai useita ruutuja
- Ei kalliita kyselyitä tai I/O-valvontaa
- Rajoitetut odotustilastotiedot
Vuoden 2008 uudelleensuunnittelu edusti täydellistä uudelleenkuvittelua pikemminkin kuin asteittaista parannusta.
10.2 Aktiivisuusmonitori sisään SQL Server 2014/2016
SQL Server Vuosina 2014 ja 2016 tehtiin vähittäisiä parannuksia Activity Monitorin taustalla olevaan tiedonkeruuseen, mutta visuaalisia muutoksia oli vähän.
10.2.1 Parannukset ja tehostukset
Näiden versioiden tärkeimpiä parannuksia olivat:
- Parempi suorituskyky valvottaessa palvelimia, joilla on tuhansia välimuistissa olevia suunnitelmia
- Parannetut suodatusominaisuudet Prosessit-ruudussa
- Odotustilastojen koonnin tarkkuuden parantaminen
- Parannettu sarakkeiden lajittelun ja suodatuksen käsittely suurilla tulosjoukoilla
- Tehokkaammat DMV-kyselyt vähentävät valvonnan työmäärää
Ydinrajapinta pysyi johdonmukaisena SQL Server 2008, ylläpitäen järjestelmänvalvojien tuttua käytäntöä.
10.3 Aktiivisuusmonitori sisään SQL Server 2019/2022
viimeaikainen SQL Server versiot jatkavat Activity Monitorin kehitystä keskittyen suorituskykyyn ja vakauteen.
10.3.1 Uusimmat ominaisuudet ja mahdollisuudet
SQL Server Vuoden 2019 ja 2022 aktiivisuusmonitori sisältää:
- Näissä versioissa käyttöön otettujen uusien odotustyyppien tuki
- Parannettu renderöintiteho SSMS:ssä WPF-teknologian avulla
- Suuren aktiivisten istuntojen määrän parempi käsittely
- Parannettu yhteensopivuus pilvipohjaisten SQL-alustojen kanssa
- Tarkemmat suorittimen ja I/O:n mittarit
10.3.2 Tunnetut ongelmat uusimmissa versioissa
SQL Server Vuonna 2019 toi mukanaan useita Activity Monitor -virheitä:
- Pysyvä keskeytetty tila: Aktiviteettien valvonta siirtyy usein keskeytettyyn tilaan eikä jatku, erityisesti SSMS 18.0-18.3:ssa. Korjattu uudemmissa SSMS-versioissa.
- Etäyhteyden epäonnistumiset: Jotkin määritykset estävät Aktiviteettien valvonnan avautumisen etäinstansseissa. Ongelman voi kiertää ottamalla käyttöön tiettyjä seurantalippuja tai käyttämällä uudempia SSMS-koontiversioita.
- Lupaongelmat: Uudet järjestelmänäkymät vaativat lisäkäyttöoikeuksia, joita ei ole dokumentoitu selkeästi, minkä vuoksi näytöt tyhjiä, vaikka VIEW SERVER STATE -arvo olisi näkyvissä.
Käytä aina uusinta SSMS-versiota työskennellessäsi SQL Server Vuosina 2019 ja 2022 näiden ongelmien välttämiseksi.
11. Käytännön käyttötapauksia ja esimerkkejä
Käytännön esimerkit havainnollistavat, miten Aktiviteettien valvontaa käytetään tehokkaasti yleisissä vianmääritystilanteissa.
11.1 Tapaustutkimus: Hitaan verkkosovelluksen diagnosointi
Kehitystiimi raportoi, että heidän verkkosovelluksestaan on tullut sietämättömän hidas, sivujen latautumisaika on 20–30 sekuntia normaalin 2–3 sekunnin sijaan.
11.1.1 Alustava tutkinta yleiskatsauspaneelin avulla
Avaa Aktiviteettien valvonta ja tutki Yleiskatsaus-ruutua:
- Prosessorin käyttöasteen (%) kuvaaja näyttää 85–95 %:n suorittimen käyttöasteen, mikä on huomattavasti korkeampi kuin normaali 30–40 %:n lähtötaso.
- Odottavien tehtävien määrä vaihtelee 10–20 tehtävän välillä, kun normaali lähtötaso on 0–3.
- Tietokannan I/O-liiketoiminta on kohtalaista, noin 50 Mt/s.
- Eräpyyntöjen määrä sekunnissa on odotettua pienempi, 100 pyyntöä sekunnissa, kun se on tyypillinen 300–400 pyyntöä sekunnissa toimistoaikoina.
Tämä viittaa suorittimen pullonkaulaan, jossa resurssien kilpailu aiheuttaa pienentynyttä läpimenoaikaa. Palvelin työskentelee ahkerasti, mutta ei käsittele montaa pyyntöä.
11.1.2 Ongelmallisen kyselyn tunnistaminen
Laajenna Viimeisimmät kalliit kyselyt -ruutu ja lajittele suoritusten määrän mukaan minuutissa:
- Ylin kysely näyttää 15 000 suoritusta minuutissa.
- Napsauta hiiren kakkospainikkeella ja valitse Muokkaa kyselytekstiä tutkimaan kyselyä.
- Kysely on yksinkertainen SELECT-lauseke, joka hakee yhden käyttäjätietueen:
SELECT * FROM Users WHERE UserId = @UserId. - Tämän kyselyn ei pitäisi suorittaa 15 000 kertaa minuutissa normaalissa sovelluskäytössä.
Napsauta kyselyä hiiren kakkospainikkeella ja valitse Näytä toteutussuunnitelmaSuunnitelma näyttää Käyttäjät-taulukon skannauksen ja varoituksen puuttuvasta indeksistä Käyttäjätunnus-sarakkeessa.
Suodata Prosessi-ruutu sovelluksen mukaan, jotta näet vain verkkosovelluksen yhteydet. Useat istunnot näyttävät saman kyselyn toistuvasti.
11.1.3 Ratkaisu ja varmennus
Ongelma johtuu kahdesta syystä: kyselyiden suorituskertojen liiallisuudesta ja puuttuvasta indeksistä. Ratkaisun vaiheet:
- Luo puuttuva indeksi:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Ota yhteyttä kehitystiimiin liiallisista suoritusmääristä. Tutkimus paljastaa N+1-kyselyongelman sovelluskoodissa, jossa silmukka hakee käyttäjätiedot jokaisesta listan alkiosta.
- Muokkaa sovellusta koota käyttäjähaut yhdeksi kyselyksi IN-lauseen tai taulukkoarvoisen parametrin avulla.
- Vahvista korjaus seuraamalla Aktiviteettien valvontaa käyttöönoton jälkeen. Suorittimen käyttöaste laskee 35–40 prosenttiin, suoritusten määrä minuutissa laskee 200–300:aan ja sovellusten vasteajat palautuvat normaaliksi.
11.2 Tapaustutkimus: Esto-ongelman ratkaiseminen
Käyttäjät raportoivat, että tilausten syöttöjärjestelmä jumiutuu ajoittain 30–60 sekunniksi ennen normaalin toiminnan jatkumista.
11.2.1 Estoketjun havaitseminen
Avaa Järjestelmänvalvonta jonkin näistä jäädytystapahtumista aikana ja laajenna Prosessit-ruutu:
- Järjestä Istunnon tunniste nähdäksesi kaikki istunnot järjestettyinä.
- Useiden istuntojen arvot näkyvät Estetty sarake, jotka kaikki osoittavat istuntotunnukseen 73.
- Istunnossa 73 näkyy '1' kohdassa Pään estäjä sarake, joka vahvistaa sen olevan perimmäinen syy.
- Odotustyyppi Estettyjen istuntojen kohdalla näkyy LCK_M_X, mikä osoittaa, että ne odottavat yksinoikeuslukituksia.
- Odota resurssi sarake paljastaa, että esto on Tilaukset-taulukossa.
11.2.2 Syyn analysointi
Napsauta hiiren kakkospainikkeella istuntoa 73 ja valitse Lisätiedot komennon tarkastelemiseksi:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
Tämä päivitys on osa tunneittain suoritettavaa eräkäsittelytyötä. Tarkistetaan Kirjaudu sarake vahvistaa, että istunto kuuluu eräkäsittelypalvelun tilille.
Kysely pitää lukittuja Tilaukset-taulukkoa käsitellessään tuhansia tilauksia. Odotusaika Estettyjen istuntojen määrä kasvaa tasaisesti, mikä vahvistaa, että tämä pitkään jatkunut toiminto on ongelma.
11.2.3 Korjauksen toteuttaminen
Lyhytaikainen ratkaisu:
- Dokumentoi istunnon 73 tiedot, mukaan lukien kyselyteksti ja kesto.
- Anna päivityksen valmistua luonnollisesti, koska se on laillista eräajoa.
- Varmista valmistumisen jälkeen, että estetyt istunnot on poistettu ja normaali toiminta jatkuu.
Toteutetut pitkän aikavälin ratkaisut:
- Ajoita eräajo uudelleen ruuhka-aikojen ulkopuolella (klo 2–4 aamulla toimistoaikojen sijaan).
- Muokkaa eräkäsittelyä päivittää tilauksia pienemmissä 100 tietueen erissä kerrallaan, vapauttaen lukitukset erien välillä.
- Lisää hakemisto OrderId-sarakkeessa päivitystoiminnon nopeuttamiseksi.
- Harkitse SNAPSHOT-eristystä lukutoimintoja varten eston vaikutuksen vähentämiseksi.
11.3 Tapaustutkimus: Liiallisten kyselyiden suorittamisten tunnistaminen
Tietokannan valvonta osoittaa, että suorittimen käyttö on vähitellen kasvanut viimeisen kuukauden aikana, mutta sovelluskoodissa ei ole tapahtunut selviä muutoksia.
11.3.1 Epänormaalien suoritusmäärien havaitseminen
Avaa Aktiviteettien valvonta ja tutki Viimeisimmät kalliit kyselyt -ruutua:
- Järjestä Suorituksia/min nähdäksesi useimmin suoritetut kyselyt.
- Yleisin kysely näyttää 37 000 suoritusta minuutissa – paljon enemmän kuin mikään muu kysely.
- Napsauta hiiren kakkospainikkeella ja valitse Muokkaa kyselytekstiä.
- Kysely hakee tuotekategorian tiedot:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - Tämän yksinkertaisen kyselyn pitäisi olla nopea ja välimuistiin tallennettava, mutta sitä suoritetaan kymmeniä tuhansia kertoja minuutissa.
11.3.2 Jäljitys sovelluskoodiin
Etsi Prosessi-ruudusta istunnot, jotka suorittavat tätä kyselyä:
- Huomaa Hakemus sarakkeessa näkyy ”ProductCatalogService”.
- Napsauta hiiren kakkospainikkeella yhtä näistä istunnoista ja valitse Jäljitysprosessi sisään SQL Server Profiler.
- SQL Profiler paljastaa, että kysely suoritetaan toistuvasti nopeassa tahdissa eri CategoryId-arvoilla.
- Ota yhteyttä ProductCatalogService-palvelua hallinnoivaan kehitystiimiin koodin tarkistusta varten.
Koodin tarkistus paljastaa ongelman: äskettäinen muutos hakee tuotelistaukset luokkien kera. Jokaiselle tulosjoukon tuotteelle (usein yli 1 000 tuotetta) koodi tekee erillisen tietokantakutsun hakeakseen luokkatiedot – klassinen N+1-kyselyongelma.
11.3.3 Sovelluksen optimointi
Toteuta asianmukainen korjaus:
- Muokkaa sovelluskyselyä käyttääksesi JOIN-kutsua tuotteiden ja niiden luokkien hakemiseen yhdessä tietokantakutsussa:
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; - Ota päivitetty koodi käyttöön ja valvoa Aktiviteettimonitoria.
- Vahvista korjaus: Kategoriakyselyn suoritusmäärä minuutissa laskee 37 000:sta alle 100:aan, ja kokonaisprosessorin käyttö laskee 40 %.
- Dokumentoi opittu läksy ja jaa kehitystiimin kanssa vastaavien ongelmien välttämiseksi tulevissa koodimuutoksissa.
12. Havaitse mahdolliset tietokannan vioittumiset
Vaikka Järjestelmänvalvontaa ei ole suunniteltu erityisesti tietokannan vioittumisen havaitsemiseen, tietyt sen näytössä näkyvät kuviot voivat viitata taustalla oleviin vioittumisongelmiin, jotka vaativat lisätutkimuksia.
12.1 Mahdollisen tietokannan vioittumisen oireet
Jos tietokantaa on vioittumassa ja sitä käytetään, saatat joskus nähdä seuraavanlaisia virheitä:
1. Prosessit-ruudussa:
- Istunnot jumissa KESKEYTETYSSÄ tilassa epätavallisilla odotustyypeillä
- Virhetiloja näyttävät prosessit
- Kyselyt epäonnistuvat toistuvasti
2. Resurssien odotusajat -ruudussa:
- Epätavalliset I/O-ongelmiin liittyvät odotustyypit, jotka voivat viitata levyongelmiin (vaikka tämä todennäköisemmin viittaa laitteisto-ongelmiin kuin loogiseen vioittumiseen)
3. Viimeaikaisissa kalliissa kyselyissä:
- Kyselyt, joilla on epätavallisen paljon fyysisiä lukukertoja, jos ne toistuvasti yrittävät lukea vioittuneita sivuja
12.2 Lisätarkistus DBCC CHECKDB:llä
Kun Järjestelmävalvonta näyttää oireita, jotka viittaavat mahdolliseen vioittumiseen, sinun on välittömästi suoritettava DBCC CHECKDB tarkistaaksesi tietokannan eheyden. Tämä komento skannaa kaikki tietokannan sivut, vahvistaa tarkistussummat ja tarkistaa loogisen yhtenäisyyden virheet.
Lisätietoja DBCC CHECKDB:n käyttämisestä tietokannan vioittumisten tarkistamiseen ja korjaamiseen on osoitteessa kattava DBCC CHECKDB -opas.
12.3 Korjaus ammattimaisilla työkaluilla
Jos DBCC CHECKDB vahvistaa tietokannan vioittumisen, sinulla on useita korjausvaihtoehtoja:
- Suositeltava tapa on palauttaa varmuuskopiosta, joka tunnetaan nimellä toimiva. Katso lisätietoja. kattava oppaamme varmuuskopiointiin ja palautukseen SQL Server tietokannat.
- Pienten vioittumisten tapauksessa DBCC CHECKDB ja REPAIR_REBUILD saattavat ratkaista ongelmat.
- Kriittisten tietokantojen osalta, joista ei ole viimeaikaisia varmuuskopioita, ammattimainen SQL-palautusohjelmisto ja palvelut voivat usein palauttaa tietoja, joita sisäänrakennetut korjausvaihtoehdot eivät pysty.
13. Päätelmä
SQL Server Aktiviteettien valvonta on korvaamaton työkalu tietokannan ylläpitäjille, sillä se tarjoaa välittömiä tietoja palvelimen suorituskyvystä ja auttaa diagnosoimaan ongelmia nopeasti ja tehokkaasti.
13.1 Yhteenveto avainkohdista
Tässä oppaassa olemme käsitelleet, miten Aktiviteettien valvonta auttaa sinua ymmärtämään ja vianmäärityksessä SQL Server esitys:
- Aktiviteettien valvonta tarjoaa reaaliaikaisen näkyvyyden prosesseihin, odotuksiin, kyselyihin ja I/O:hun järjestelmällisen graafisen käyttöliittymän kautta.
- Viisi ruutua – Yleiskatsaus, Prosessit, Resurssien odotusajat, Tiedostojen I/O ja Viimeaikaiset kalliit kyselyt – tarjoavat kukin ainutlaatuisia näkökulmia palvelimen toimintaan.
- Yleisiä vianmääritystilanteita, kuten kyselyiden suoritusmäärien liiallisuutta, ketjujen estymistä ja korkeaa suorittimen käyttöä, voidaan hallita systemaattisella Aktiviteettien valvonnan tutkimisella.
- Vaikka Activity Monitor on tehokas, sillä on rajoituksia, kuten historiallisen datan puute, odotustyyppien ryhmittely ja valvonnan yleiskulut, jotka vaikuttavat sen sovellettavuuteen.
- Activity Monitorin täydentäminen DMV-kyselyillä, sp_WhoIsActive- ja Extended Events -työkaluilla sekä mahdollisesti kolmannen osapuolen työkaluilla luo kattavan valvontastrategian.
- Päivitysvälien parhaiden käytäntöjen noudattaminen, Aktiviteettien valvonnan sulkeminen, kun sitä ei käytetä, ja useiden ikkunoiden yhdistäminen korrelaatiota varten maksimoi sen arvon ja minimoi sen vaikutuksen.
13.2 Aktiivisuusmonitori osana työkalupakkiasi
Activity Monitorin tulisi toimia ensisijaisena työkaluna suorituskykytutkimuksissa, ei ainoana työkaluna. Sen vahvuus on välittömän näkyvyyden tarjoaminen aktiivisen vianmäärityksen aikana, mikä auttaa sinua nopeasti selvittämään, onko tietokanta pullonkaula, ja tunnistamaan, mitkä osa-alueet vaativat tarkempaa tutkimusta.
Ajattele Activity Monitoria autosi kojelaudan kaltaisena – se kertoo välittömästi, jos jokin on vialla, ja auttaa tunnistamaan yleisen ongelmakohdan. Aivan kuten autosi kojelauta ei kerro tarkalleen, miksi moottorin vikavalo syttyi, Activity Monitor ohjaa sinut ongelmien luo paljastamatta aina niiden täydellistä perimmäistä syytä. Tämä syvällisempi analyysi vaatii lisätyökaluja ja asiantuntemusta.
Integroi Aktiviteettien valvonta laajempaan työkalupakkiin, joka sisältää suoritussuunnitelma-analyysin, odotustilastojen seurannan, historialliset valvontaratkaisut ja suorituskyvyn parhaat käytännöt. Käytä sitä yhdessä asianmukaisten indeksointistrategioiden, kyselyoptimointitekniikoiden ja kapasiteettisuunnittelun kanssa.
13.3 Oppimismatkasi jatkaminen
Activity Monitorin hallitseminen on vain yksi askel kohti tehokasta tietokannan ylläpitäjää. Jatka taitojasi kehittämällä:
- Toteutussuunnitelmien tulkitsemisen ja tehottomien toimintojen tunnistamisen oppiminen
- Ymmärtäminen SQL Server odotustilastot ja niiden vaikutukset
- Indeksisuunnittelun ja optimointitekniikoiden opiskelu
- Tutkiminen SQL Servern arkkitehtuuri ja miten se käsittelee kyselyitä
- Systemaattisten vianmääritysmenetelmien harjoittelu
- Kokemuksen rakentaminen laajennetuilla tapahtumilla yksityiskohtaista jäljitystä varten
- Transaktioiden eristämistasojen ja niiden suorituskykyvaikutuksen ymmärtäminen
Jokainen Activity Monitorin avulla tehtävä suorituskykytutkimus opettaa sinulle jotain uutta siitä, miten SQL Server toimii ja miten sovellukset ovat vuorovaikutuksessa tietokantojen kanssa. Dokumentoi löydöksesi, jaa tietoa kollegoiden kanssa ja rakenna ratkaisukirjasto yleisiin ongelmiin.
13.4 Lisäresurssit
Laajenna tietämystäsi näillä arvokkailla resursseilla:
- Avaa Activity Monitor sisään SQL Server Management Studio (SSMS)
: Virkamies SQL Server dokumentaatio Aktiviteettien valvonnan avaamisesta SQL Server Management Studio (SSMS).
- Activity Monitor
: Virallinen SQL Server dokumentti Aktiviteettien valvonnan käytöstä.
14. Usein kysytyt kysymykset (FAQ)
K: Mikä on SQL Server ActivityMonitor?
A: SQL Server Aktiviteettien valvonta on sisäänrakennettu työkalu SQL Server Management Studio, joka näyttää reaaliaikaista tietoa suoritetuista prosesseista SQL Server instanssi ja niiden vaikutus palvelinresursseihin. Se tarjoaa graafisen kojelaudan, jossa on viisi ruutua, jotka näyttävät palvelimen toiminnan eri osa-alueita, kuten prosessorin käyttöasteen, odottavat tehtävät, I/O-nopeudet, aktiiviset istunnot ja kalliit kyselyt.
K: Miten avaan Aktiviteettien valvonnan SSMS:ssä?
A: Voit avata Aktiviteettien valvonnan neljällä tavalla: (1) Napsauta Aktiviteettien valvonnan kuvaketta SSMS-työkalurivillä, (2) Napsauta hiiren kakkospainikkeella SQL Server instanssin nimi Objektiselaimessa ja valitse Activity Monitor, (3) Paina Ctrl + muut + Atai (4) Määritä SSMS käynnistymään automaattisesti kohdan Työkalut -> Vaihtoehdot -> ympäristö -> Startup.
K: Mitä käyttöoikeuksia tarvitsen Aktiviteettien valvonnan käyttämiseen?
A: Tarvitset NÄYTÄ PALVELIMEN TILA käyttöoikeus nähdä useimmat Toimintojen valvonnan tiedot. Datatiedoston I/O-ruutua varten tarvitset myös joko LUO TIETOKANTA, MUUTA MITÄ TIETOKANTAAtai NÄYTÄ MIKÄ TAHANSA MÄÄRITELMÄ käyttöoikeudet. Ilman näitä käyttöoikeuksia Järjestelmänvalvonta saattaa avautua, mutta näyttää tyhjiä ruutuja.
K: Miksi Aktiivisuuden valvonta on keskeytetty tai ei toimi?
A: Aktiviteettien valvonta pysähtyy yleensä käyttöoikeusongelmien, vanhentuneiden SSMS-versioiden tai käytöstä poistettujen etäyhteyksien vuoksi. Ratkaisu: (1) Päivitä uusimpaan SSMS-versioon, (2) Varmista, että sinulla on PALVELIMEN TILAN NÄYTTÖ -oikeus, (3) Tarkista, että etäyhteydet on otettu käyttöön SQL Server esimerkiksi (4) Käynnistä SSMS uudelleen ja (5) Kokeile yhteyden muodostamista Windows-todennuksella SQL-todennuksen sijaan, jos mahdollista.
K: Mitä eroa on Aktiviteettien valvonnalla ja sp_WhoIsActivella?
A: Activity Monitor on SSMS:ään sisäänrakennettu graafinen työkalu, joka tarjoaa järjestelmällisiä ikkunoita eri valvontanäkökohtia varten. sp_WhoIsActive on ilmainen yhteisön luoma tallennettu proseduuri, joka palauttaa yksityiskohtaiset istuntotiedot yhdessä tulosjoukossa, jossa on tarkempia odotustyyppejä, estotietoja ja mukautusvaihtoehtoja kuin Activity Monitorissa. Activity Monitor sopii paremmin visuaaliseen tutkimiseen, kun taas sp_WhoIsActive on erinomainen komentosarjojen valvonnassa ja tarjoaa yksityiskohtaisempia tietoja.
K: Vaikuttaako Aktiviteettien valvonta palvelimen suorituskykyyn?
V: Kyllä, Aktiviteettien valvonnalla on mitattavissa oleva ylimääräinen resurssi, koska se kyselee järjestelmän DMV-arvoja jokaisen päivitysvälin yhteydessä. Vaikutus kasvaa alhaisempien päivitysvälejen myötä – Microsoft varoittaa, että alle 10 sekunnin välit voivat vaikuttaa palvelimen suorituskykyyn. Sulje Aktiviteettien valvonta aina, kun sitä ei aktiivisesti käytetä, ja harkitse 30–60 sekunnin päivitysvälejä tuotantopalvelimilla, jotka ovat raskaasti kuormitettuja.
K: Voinko saada Aktiviteettien valvonnan tietoja T-SQL:n avulla?
V: Kyllä, Toimintojen valvonta kyselee järjestelmän dynaamisia hallintanäkymiä, kuten sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats ja sys.dm_exec_query_stats. Voit kysellä näitä DMV-näkymiä suoraan T-SQL:n avulla hakeaksesi vastaavat tiedot ohjelmallisesti, mikä mahdollistaa mukautetut valvontaskriptit ja automatisoidun tiedonkeruun.
K: Mikä on oletusarvoinen päivitysväli?
A: Oletusarvoinen päivitysväli on 10 sekuntia. Voit muuttaa tätä napsauttamalla hiiren kakkospainikkeella mitä tahansa Yleiskatsaus-ruudun kohtaa ja valitsemalla Päivitä välija valitsemalla valmiista vaihtoehdoista: 1 sekunti, 5 sekuntia, 10 sekuntia, 30 sekuntia, 1 minuutti tai 1 tunti. Lyhyemmät aikavälit tarjoavat enemmän reaaliaikaisia näkymiä, mutta lisäävät valvonnan työmäärää.
K: Miten voin avata Aktiviteettien valvonnan automaattisesti SSMS:n käynnistyksen yhteydessä?
A: Määritä automaattinen käynnistys SSMS-asetusten kautta: Siirry kohtaan Työkalut -> Vaihtoehdot -> ympäristö -> StartupValitse Avaa objektiselaimen ja toiminnanvalvonnan mistä Käynnistettäessä avattavasta valikosta. Aktiviteettien valvonta avautuu automaattisesti aina, kun muodostat yhteyden palvelimeen SSMS:ssä.
K: Mitä rajoituksia Aktiviteetin valvonnalla on?
A: Keskeisiä rajoituksia ovat: (1) Ei historiallisen datan tallennus- tai trendiominaisuuksia, (2) Odotustyypit on ryhmitelty luokkiin sen sijaan, että niitä näytettäisiin erikseen, (3) Jotkin odotustyypit, kuten CXPACKET, eivät välttämättä näy, (4) Ajankohtaiset tilannevedokset saattavat jäädä huomaamatta transienttiongelmia, (5) Valvontakuorma voi vaikuttaa kiireisiin palvelimiin, (6) Ei hälytysmekanismia ennakoivalle valvonnalle ja (7) Tietoja ei voida koota useiden eri palvelimien välillä SQL Server esiintymät. Näihin tarpeisiin voit täydentää Aktiviteettien valvontaa laajennetuilla tapahtumilla, tiedonkeruujoukoilla tai kolmannen osapuolen valvontatyökaluilla.
kirjailijasta
Yuan Sheng on kokenut tietokannan ylläpitäjä (DBA), jolla on yli 10 vuoden kokemus alalta SQL Server ympäristöissä ja yritystietokantojen hallinnassa. Hän on onnistuneesti ratkaissut satoja tietokantojen palautustilanteita rahoituspalveluissa, terveydenhuollossa ja valmistusorganisaatioissa.
Yuan on erikoistunut SQL Server tietokannan palautus, korkean käytettävyyden ratkaisutja suorituskyvyn optimointia. Hänen laajaan käytännön kokemukseensa kuuluu usean teratavun tietokantojen hallinta, Always On Availability Groupsin käyttöönotto sekä automatisoitujen varmuuskopiointi- ja palautusstrategioiden kehittäminen kriittisille liiketoimintajärjestelmille.
Teknisen asiantuntemuksensa ja käytännönläheisen lähestymistapansa avulla Yuan keskittyy luomaan kattavia oppaita, jotka auttavat tietokannan ylläpitäjiä ja IT-ammattilaisia ratkaisemaan monimutkaisia ongelmia. SQL Server haastaa tehokkaasti. Hän pysyy ajan tasalla uusimmista SQL Server julkaisuja ja Microsoftin kehittyviä tietokantateknologioita, testaten säännöllisesti palautusskenaarioita varmistaakseen, että hänen suosituksensa vastaavat todellisia parhaita käytäntöjä.
Onko sinulla kysyttävää SQL Server palautus tai tarvitsetko lisäohjeita tietokannan vianmääritykseen? Yuan toivottaa sinut tervetulleeksi palautetta ja ehdotuksia näiden teknisten resurssien parantamiseksi.


















