En af de mest kritiske variabler for databasens ydeevne er SQL-indeksfragmentering. Vi kan blive udsat for blokering, deadlocks, IO-problemer og diskspildsproblemer, hvis fragmenteringsniveauet ikke forvaltes korrekt. Det kan også føre til en ukorrekt udførelsesplan.
DMV’er
I SQL Server kan vi bruge DMV’en sys.dm_db_index_physical_stats til at få oplysninger om indeksfragmenteringsniveau, sidetal og indekstyper ved hjælp af denne.
SSMS
Vi kan også bruge de indbyggede SQL Server-rapporter ‘Index Physical Statistics’ i SSMS
Vi får den fysiske indeksstatistik for databasen i følgende format.
Vi er begrænset til at køre denne rapport på databaseniveau, og hvis vi har flere databaser i instansen og mange instanser, der skal administreres, bliver det en tids- og ressourcekrævende opgave at indsamle detaljerne, analysere status baseret på vores tærskelstatus og derefter beslutte, om SQL-indekset skal genopbygges eller reorganiseres.
Brugerdefinerede scripts
Vi kan også bruge brugerdefinerede scripts til at opdage og løse fragmenteringsproblemerne, men det er også en kompliceret proces at etablere og analysere resultaterne manuelt. Vi ønsker måske at have alle disse oplysninger på et til at centralisere sted og derefter beslutte politikken for vedligeholdelse af indekset. Vi kan bruge Alter Index-kommandoerne til at fjerne fragmenteringsniveauet. For små databaser er vi ligeglade med sidetællingerne, mens vi genopbygger indekset, men for store databaser skal vi også overveje disse.
3rd party tools
Vi kan nemt overvåge, analysere og fjerne den eksisterende SQL-indeksfragmentering ved hjælp af ApexSQL Defrag. Vi kan administrere flere instanser og databaser i et grafisk værktøj. Vi får følgende fordele fra dette værktøj.
- Det giver en grafisk brugergrænseflade til at overvåge og analysere indeksfragmenteringen
- Vi kan foretage indeksvedligeholdelse for alle SQL Server-instanser og databaser
- Det giver mulighed for at konfigurere de brugerdefinerede rapporter baseret på vores krav
- Vi kan konfigurere politikker til at kontrollere og udføre indeksvedligeholdelsesopgaver i henhold til de brugerdefinerede metrikker
- Vi kan analysere (hurtig eller dyb) indeksfragmentering, indstille fyldningsfaktor, online indeksvedligeholdelse
- Vi kan udarbejde rapporterne i de ønskede formater (CSV eller HTML)
Når du har installeret ApexSQL Defrag-værktøjet og konfigureret en instans til overvågning, viser det hurtigt detaljerne SQL-indeksfragmenteringsstatus.
Vi bør undgå SQL index rebuild eller reorganisere operationer, hvis det ikke er nødvendigt. Hvis vi har meget store indekser, kan det tage lang tid og flere systemressourcer at analysere. ApexSQL Defrag giver mulighed for at kontrollere fragmenteringen.
- Begrænset: I denne scanningstilstand indsamler SQL Server begrænsede oplysninger om fragmenteringen. Den forårsager ikke noget ydelsesproblem for systemet. Det er standardtilstand i ApexSQL Defrag
- Samplet: I denne tilstand tager den en prøveudsnit af SQL-indekset og indsamler fragmenteringsoplysningerne
- Detaljeret: Vi får detaljeret viden om alle indekssiderne; det kan forårsage noget overhead på systemressourcerne, men vi kan bruge det, hvis vi observerer den høje fragmentering med ovenstående scanningstilstande
På samme måde kan vi indstille fragmenteringsniveauet i kategorien High, Medium og Low.
Du kan også indstille din egen vandtærskel for fragmentering for at analysere indeksene.
Når vi har analyseret resultatsættet, skal du højreklikke på det pågældende SQL-indeks, og du kan have flere muligheder at vælge.
- Analyser (hurtigt)
- Analyser (dybt)
- Reorganiserer\Rebyg\Rebyg online
- Indstil fyldningsfaktor
- Vi kan sætte på pause, stoppe eller annullere, hvis der kører et job for det pågældende indeks. Det er nyttigt, hvis vi ser nogen ydelsesproblemer eller blokering på grund af et bestemt indeks, kan vi annullere dette job selv
ApexSQL Defrag tillader oprettelse af politikker fra de foruddefinerede skabeloner eller ved hjælp af de brugerdefinerede parametre. Skabelonen er også velegnet til de fleste krav til SQL-indeksdefragmentering.
Ved hjælp af disse skabeloner kan vi beslutte at defragmentere alle indekser eller indeks baseret på tærskelniveau i offline- eller online-tilstand. For eksempel ønsker jeg at oprette politikken til at genopbygge online top 50% mest fragmenterede indekser over 30% eller reorganisere hvis fragmenteret over 10%.
Vi kan også konfigurere ressourcetærsklen vedrørende CPU, hukommelsesbelastning, transaktionslogforbrug, aktive transaktioner. Vi får ikke dette niveau af kontrol på indeksvedligeholdelse ved hjælp af vedligeholdelsesguidejobs eller brugerdefinerede scripts.
Hvis ressourcen er optaget, kan vi også indstille timingen for genforsøg. Jeg har set kravene hos nogle brugere, der ikke ønsker at udføre vedligeholdelsen, efter at deres magre databasebrugsperiode er overstået. Hvis vi udfører vedligeholdelsen, skal vi stoppe jobbet manuelt, eller vi skal oprette et andet SQL-agentjob for at stoppe indeksvedligeholdelsesjobbet på et bestemt tidspunkt.
ApexSQL Defrag giver overhead til at konfigurere og overvåge flere job. Vi kan tilpasse til at annullere indeksvedligeholdelsesjobbet efter ‘N’ antal timer.
I ovenstående skærmbillede kan du se, at vi yderligere kan tilpasse SQL indeksvedligeholdelsesoperationen ved fragmenteringsniveauet, indeksstørrelsen og sidetællingerne også. Du kan definere den låste objektforsinkelse ved en bestemt tid. Nogle gange ønsker vi at udelukke det indeks, hvor vi har indekssidetællinger, der er mindre eller større end de angivne tællinger.
Du kan foretage ændringerne og konfigurere dem som en skabelon til genbrug. Når vi har udført indeksvedligeholdelse, får du i fanen Aktiviteter et glimrende overblik over indeksfragmenteringsstatistikken før og efter vedligeholdelsen. Det er vigtigt at vide, om indeksfragmenteringsniveauet er under kontrol eller ej efter vedligeholdelsen. Vi skal normalt registrere fragmenteringsniveauet igen, men det sparer os for overhead med disse oplysninger.
I afsnittet Rapporter kan vi se rapporterne fra serverniveauet, den samlede rapport.
Vi kan også få et fint overblik over de 10 bedste clusterede og ikke-clusterede indekser også.
Vi er også interesserede i at kende CPU- og hukommelsesadfærden, mens indeksvedligeholdelsen kører. Vi kan få disse nyttige oplysninger og holde øje med systemressourcerne også.
Vi kan eksportere alle rapporterne og konfigurere eksportindstillingen. Vi ønsker måske, at begrænsede oplysninger skal udtrækkes, mens vi udforsker den. ApexSQL Defrag giver dig mulighed for at vælge, hvilke oplysninger der skal vises, såsom diagrammer, statistikker, SQL-indeksstatistik diagrammer, vi ønsker at inkludere i rapporten.
Konklusion:
ApexSQL Defrag værktøj gør det nemt for DBA’erne at udføre den administrative opgave med bedre SQL-indeks overvågning og vedligeholdelse. Du får alle oplysninger er et grafisk værktøj med brugerdefinerede visuals, politikker sammen med forskellige informative rapporter.