Yksi tietokannan suorituskyvyn kannalta kriittisimmistä muuttujista on SQL-indeksien pirstoutuminen. Voimme kohdata tukkeutumista, umpikujia, IO-ongelmia, levyn läikkymisongelmia, jos pirstoutumistasoa ei hallita asianmukaisesti. Se voi myös johtaa virheelliseen suoritussuunnitelmaan.
DMV:t
SQL Serverissä voimme käyttää DMV:tä sys.dm_db_index_physical_stats saadaksemme tietoa indeksin pirstoutumistasosta, sivumääristä ja indeksityypeistä tämän avulla.
SSMS
Voimme myös käyttää SQL Serverin sisäänrakennettuja raportteja ’Index Physical Statistics’ SSMS:ssä
Saamme tietokannan indeksin fyysiset tilastot seuraavassa muodossa.
Voimme suorittaa tämän raportin vain tietokantatasolla, ja jos meillä on useita tietokantoja instanssissa ja monia instansseja hallinnoitavana, tulee aikaa ja resursseja vieväksi tehtäväksi kerätä yksityiskohdat, analysoida tila kynnystilanteen perusteella ja päättää sitten SQL-indeksin uudelleenrakentamisesta tai uudelleenjärjestämisestä.
Mukautetut skriptit
Voimme käyttää myös mukautettuja skriptejä pirstaloitumisongelmien havaitsemiseen ja korjaamiseen, mutta myös niiden luominen ja tulosten analysointi manuaalisesti on monimutkainen prosessi. Saatamme haluta kaikki nämä tiedot keskitettyyn paikkaan ja päättää sitten indeksin ylläpitokäytännöstä. Voimme käyttää Alter Index -komentoja pirstaloitumistason poistamiseen. Pienissä tietokannoissa emme välitä paljon sivumääristä, kun rakennamme indeksiä uudelleen, mutta suurissa tietokannoissa meidän on otettava myös nämä huomioon.
3rd party tools
Voimme helposti seurata, analysoida ja poistaa olemassa olevan SQL-indeksin pirstaloituneisuuden käyttämällä ApexSQL Defragia. Voimme hallita useita instansseja ja tietokantoja graafisella työkalulla. Saamme tästä työkalusta seuraavat edut.
- Se tarjoaa graafisen käyttöliittymän indeksin pirstaloitumisen seurantaan ja analysointiin
- Voimme tehdä indeksin ylläpidon kaikille SQL Server -instansseille ja tietokannoille
- Se tarjoaa tavan konfiguroida mukautettuja raportteja vaatimustemme perusteella
- Voimme konfiguroida käytäntöjä indeksin ylläpitotehtävien tarkistamiseen ja suorittamiseen mukautettujen metriikoiden mukaan
- Voimme analysoida (nopeaa tai syvää) indeksin pirstaloitumista, asettaa täyttökertoimen, online-indeksin ylläpidon
- Voimme laatia raportit halutuissa muodoissa (CSV tai HTML)
Kun asennat ApexSQL Defrag -työkalun ja määrität instanssin seurantaa varten, se näyttää SQL-indeksin pirstoutumistilan yksityiskohdat nopeasti.
Meidän tulisi välttää SQL-indeksin uudelleenrakentamis- tai uudelleenjärjestelytoimintoja, jos niitä ei tarvita. Jos meillä on hyvin suuria indeksejä, analyysi saattaa viedä kauan aikaa ja enemmän järjestelmäresursseja. ApexSQL Defrag antaa mahdollisuuden tarkistaa pirstaleisuuden.
- Rajoitettu: Tässä tarkistustilassa SQL Server kerää rajoitetusti tietoa pirstoutumisesta. Se ei aiheuta suorituskykyongelmia järjestelmälle. Se on ApexSQL Defragin oletustila
- Sampled: Tässä tilassa se ottaa näyteosan SQL-indeksistä ja kerää pirstoutumistiedot
- Yksityiskohtainen: Saamme yksityiskohtaista tietoa kaikista indeksin sivuista; se saattaa kuitenkin aiheuttaa jonkin verran ylikuormitusta järjestelmän resursseille, mutta voimme käyttää sitä, jos havaitsemme korkean pirstoutumisen edellä mainituilla skannaustiloilla
Vastaavasti voimme asettaa pirstoutumistason korkeaan, keskitasoiseen ja matalaan kategoriaan
Indeksien analysoimiseksi voit myös asettaa voittamasi pirstoutumisen kynnysarvon.
Kun olemme analysoineet tulosjoukon, napsauta hiiren kakkospainikkeella tiettyä SQL-indeksiä ja voit valita useita vaihtoehtoja.
- Analysoi (nopea)
- Analysoi (syvä)
- Järjestä\Rebuild\Rebuild online
- Aseta täyttökerroin
- Voimme pysäyttää, pysäyttää tai peruuttaa, jos jokin kyseistä indeksiä koskeva työ on käynnissä. Se on hyödyllistä, jos näemme suorituskykyongelmia tai estoja tietyn indeksin vuoksi, voimme peruuttaa kyseisen työn itse
ApexSQL Defrag mahdollistaa käytäntöjen luomisen ennalta määritetyistä malleista tai mukautetuista parametreista. Malli sopii myös useimpiin SQL-indeksin defragmentointivaatimuksiin.
Näiden mallien avulla voimme päättää defragmentoida kaikki indeksit tai indeksin kynnystason perusteella offline- tai online-tilassa. Haluan esimerkiksi luoda käytäntöä, jonka mukaan 50 %:n yli 30 %:n pirstaleisimmat indeksit rakennetaan uudelleen verkossa tai järjestetään uudelleen, jos pirstaleisuus on yli 10 %.
Voimme määrittää resurssien kynnysarvon myös suorittimen, muistikuorman, tapahtumalokin käytön ja aktiivisten tapahtumien osalta. Emme saa tämäntasoista hallintaa indeksin ylläpitoon käyttämällä ohjatun ylläpidon töitä tai mukautettuja skriptejä.
Jos resurssi on varattu, voimme määrittää myös uudelleenkokeilun ajoituksen. Olen nähnyt vaatimuksia joillakin käyttäjillä, jotka eivät halua suorittaa ylläpitoa sen jälkeen, kun heidän laiha tietokannan käyttöjaksonsa on päättynyt. Jos suoritamme ylläpidon, meidän on pysäytettävä työ manuaalisesti tai meidän on luotava toinen SQL-agenttityö, joka pysäyttää indeksin ylläpitotyön tiettynä ajankohtana.
ApexSQL Defrag tarjoaa päällekkäisyyksiä useiden töiden konfigurointiin ja valvontaan. Voimme räätälöidä indeksin ylläpitotyön peruuttamisen ’N’ tuntimäärän jälkeen.
Yllä olevasta kuvakaappauksesta näet, että voimme edelleen räätälöidä SQL-indeksin ylläpitotoimintoa myös fragmentointitason, indeksin koon ja sivumäärän mukaan. Voit määrittää lukittujen kohteiden viiveen tietyllä ajalla. Joskus haluamme sulkea pois indeksin, jossa indeksin sivumäärät ovat pienempiä tai suurempia kuin määritetyt lukumäärät.
Voit tehdä muutokset ja määrittää ne mallina uudelleenkäyttöä varten. Kun olemme suorittaneet indeksin ylläpidon, saat Aktiviteetit-välilehdeltä erinomaisen yleiskuvan indeksin pirstoutumistilastoista ennen ja jälkeen ylläpidon. On tärkeää tietää, onko indeksin pirstoutumistaso hallinnassa vai ei ylläpidon jälkeen. Meidän on yleensä kaapattava pirstoutumistaso uudelleen, mutta nämä tiedot säästävät meiltä yleiskustannuksia.
Raportit-osiossa voimme tarkastella raportteja palvelintasolta, kokonaisraporttia.
Saamme myös hienon näkymän top 10:stä klusteroidusta ja klusteroimattomasta indeksistä.
Meitä kiinnostaa myös CPU:n ja muistin käyttäytyminen indeksin ylläpidon ollessa käynnissä. Voimme saada nämä hyödylliset tiedot ja pitää silmällä myös järjestelmän resursseja.
Voimme viedä kaikki raportit ja määrittää vientivaihtoehdon. Saatamme haluta rajalliset tiedot poimittavaksi, kun tutkimme sitä. ApexSQL Defrag antaa sinulle mahdollisuuden valita, mitä tietoja näytetään, kuten kaavioita, tilastoja, SQL-indeksin tilastokaavioita, jotka haluamme sisällyttää raporttiin.
Johtopäätös:
ApexSQL Defrag -työkalu helpottaa DBA:n hallinnollista tehtävää paremmalla SQL-indeksin seurannalla ja ylläpidolla. Saat kaikki tiedot on graafinen työkalu, jossa on mukautettuja visualisointeja, käytäntöjä sekä erilaisia informatiivisia raportteja.