Una dintre cele mai importante variabile pentru performanța bazei de date este fragmentarea indexurilor SQL. Ne putem confrunta cu blocaje, deadlocks, probleme de IO, probleme de împrăștiere pe disc dacă nivelul de fragmentare nu este gestionat în mod corespunzător. De asemenea, poate duce și la un plan de execuție necorespunzător.
DMV-uri
În SQL Server, putem utiliza DMV-ul sys.dm_db_index_physical_stats pentru a obține informații despre nivelul de fragmentare a indexului, numărul de pagini și tipurile de index folosind acest lucru.
SSMS
De asemenea, putem utiliza rapoartele SQL Server încorporate „Index Physical Statistics” în SSMS
Obținem Index Physical Statistics pentru baza de date în următorul format.
Suntem limitați la rularea acestui raport la nivelul bazei de date, iar dacă avem mai multe baze de date în instanță și multe instanțe de gestionat, devine o sarcină care consumă timp și resurse pentru a colecta detaliile, a analiza starea pe baza stării noastre de prag și apoi a decide cu privire la reconstruirea sau reorganizarea indexului SQL.
Scripturi personalizate
Putem utiliza și scripturi personalizate pentru a detecta și rezolva problemele de fragmentare, dar este, de asemenea, un proces complicat de stabilit și de analizat rezultatele manual. Am putea dori ca toate aceste informații să fie centralizate și apoi să decidem politica de întreținere a indexului. Putem utiliza comenzile Alter Index pentru a elimina nivelul de fragmentare. Pentru bazele de date mici, nu ne pasă prea mult de numărul de pagini în timp ce reconstruim indexul, însă pentru bazele de date mari trebuie să le luăm în considerare și pe acestea.
Unelte terțe
Putem monitoriza, analiza și elimina cu ușurință fragmentarea existentă a indexului SQL folosind ApexSQL Defrag. Putem gestiona mai multe instanțe și baze de date într-un instrument grafic. Obținem următoarele beneficii de la acest instrument.
- Oferă o interfață grafică pentru utilizator pentru a monitoriza și analiza fragmentarea indexului
- Putem face întreținerea indexului pentru toate instanțele și bazele de date SQL Server
- Oferă posibilitatea de a configura rapoarte personalizate pe baza cerințelor noastre
- Putem configura politici pentru a verifica și a efectua sarcini de întreținere a indexului în funcție de parametrii personalizați
- Putem analiza fragmentarea indexului (rapidă sau profundă), setarea factorului de umplere, întreținerea online a indexului
- Putem pregăti rapoartele în formatele dorite (CSV sau HTML)
Odată ce instalați instrumentul ApexSQL Defrag și configurați o instanță pentru monitorizare, acesta afișează rapid detaliile privind starea de fragmentare a indexului SQL.
Ar trebui să evităm operațiunile de reconstrucție sau reorganizare a indexului SQL dacă nu este necesar. Dacă avem indici foarte mari, atunci analiza ar putea dura mult timp și ar putea necesita mai multe resurse de sistem. ApexSQL Defrag oferă opțiunea de a verifica fragmentarea.
- Limitat: În acest mod de scanare, SQL Server colectează informații limitate despre fragmentare. Acesta nu cauzează nicio problemă de performanță a sistemului. Este modul implicit în ApexSQL Defrag
- Sampled: În acest mod, se ia o porțiune de eșantionare a indexului SQL și se colectează informații despre fragmentare
- Detailed: Obținem cunoștințe detaliate despre toate paginile indexului; s-ar putea să provoace o oarecare suprasolicitare a resurselor sistemului, totuși, îl putem utiliza dacă observăm o fragmentare ridicată cu modurile de scanare de mai sus
În mod similar, putem seta nivelul de fragmentare în categoria High, Medium și Low (ridicat, mediu și scăzut)
De asemenea, puteți seta pragul de fragmentare câștigat pentru a analiza indexurile.
După ce am analizat setul de rezultate, faceți clic dreapta pe un anumit index SQL și puteți avea mai multe opțiuni de ales.
- Analyze (fast)
- Analyze (Deep)
- Reorganize\Rebuild\Rebuild online
- Set fill factor
- Putem să punem pe pauză, să oprim sau să anulăm dacă se execută vreun job pentru indexul respectiv. Este util dacă observăm probleme de performanță sau blocaje datorate unui anumit index, putem anula chiar acel job
ApexSQL Defrag permite crearea politicilor din șabloanele predefinite sau prin parametrii personalizați. Șablonul este, de asemenea, potrivit pentru majoritatea cerințelor de defragmentare a indexurilor SQL.
Cu ajutorul acestor șabloane, putem decide defragmentarea tuturor indexurilor sau a indexurilor pe baza unui nivel de prag în modul offline sau online. De exemplu, vreau să creez politica de a reconstrui online primii 50% cei mai fragmentați indici peste 30% sau de a reorganiza dacă sunt fragmentați peste 10%.
Putem configura pragul de resurse în ceea ce privește CPU, încărcarea memoriei, utilizarea jurnalului de tranzacții, tranzacțiile active, de asemenea. Nu obținem acest nivel de control asupra întreținerii indexurilor folosind joburile din cadrul asistentului de întreținere sau scripturile personalizate.
Dacă resursa este ocupată, putem seta, de asemenea, calendarul de reîncercare. Am văzut cerințele unor utilizatori care nu doresc să execute întreținerea după ce s-a încheiat perioada de utilizare a bazei de date slabe. Dacă efectuăm întreținerea, trebuie să oprim manual lucrarea sau trebuie să creăm o altă lucrare a agentului SQL pentru a opri lucrarea de întreținere a indexului la un anumit moment.
ApexSQL Defrag oferă suprasolicitare pentru a configura și monitoriza mai multe lucrări. Putem personaliza pentru a anula sarcina de întreținere a indexului după un număr „N” de ore.
În captura de ecran de mai sus, puteți vedea că putem personaliza în continuare operațiunea de întreținere a indexului SQL și în funcție de nivelul de fragmentare, dimensiunea indexului și numărul de pagini. Puteți defini întârzierea obiectului blocat după un anumit timp. Uneori dorim să excludem indexul în cazul în care avem un număr de pagini de index mai mic sau mai mare decât numărul de pagini specificat.
Puteți face modificările și le puteți configura ca șablon pentru a le reutiliza. După ce am efectuat întreținerea indexului, în fila Activities (Activități), obțineți o prezentare excelentă a statisticilor de fragmentare a indexului înainte și după întreținere. Este esențial să știm dacă nivelul de fragmentare a indexului este sub control sau nu după întreținere. De obicei, trebuie să capturăm din nou nivelul de fragmentare, dar această informație ne scutește de cheltuieli generale.
În secțiunea Reports (Rapoarte), putem vizualiza rapoartele de la nivelul serverului, raportul general.
Putem obține, de asemenea, o vizualizare frumoasă a primilor 10 indici clusterizați și non-clusterizați.
Suntem, de asemenea, interesați să cunoaștem comportamentul CPU și al memoriei în timpul rulării întreținerii indexului. Putem obține aceste informații utile și putem supraveghea și resursele sistemului.
Putem exporta toate rapoartele și configura opțiunea de export. S-ar putea să dorim să extindem informații limitate în timpul explorării. ApexSQL Defrag ne oferă opțiunea de a alege ce informații să afișăm, cum ar fi diagrame, statistici, diagrame statistice ale indicilor SQL pe care dorim să le includem în raport.
Concluzie:
Instrumentul ApexSQL Defrag facilitează sarcina administrativă a DBA-urilor cu o mai bună monitorizare și întreținere a indicilor SQL. Obțineți toate informațiile este un instrument grafic cu elemente vizuale personalizate, politici împreună cu diverse rapoarte informative.
.