Een van de meest kritische variabelen voor database performance is SQL Index Fragmentatie. We kunnen te maken krijgen met blokkering, deadlocks, IO problemen, Disk spill problemen als het fragmentatie niveau niet goed wordt beheerd. Het kan ook leiden tot een onjuist uitvoeringsplan.
DMVs
In SQL Server, kunnen we gebruik maken van de DMV sys.dm_db_index_physical_stats om de informatie over de index fragmentatie niveau, pagina telt, en index types te krijgen met behulp van deze.
SSMS
We kunnen ook gebruik maken van de ingebouwde SQL Server-rapporten ‘Index Physical Statistics’ in SSMS
We krijgen de Index Physical Statistics voor de database in het volgende formaat.
We kunnen dit rapport alleen op databaseniveau uitvoeren en als we meerdere databases in de instance hebben en veel instances moeten beheren, kost het veel tijd en middelen om de details te verzamelen, de status te analyseren op basis van onze drempelstatus en vervolgens te beslissen of we de SQL-index opnieuw moeten opbouwen of reorganiseren.
Aangepaste scripts
We kunnen ook aangepaste scripts gebruiken om de fragmentatieproblemen op te sporen en te verhelpen, maar het is ook een ingewikkeld proces om de resultaten handmatig vast te stellen en te analyseren. We willen misschien al deze informatie op een centrale plaats hebben en dan het beleid voor het onderhoud van de index bepalen. We kunnen de Alter Index commando’s gebruiken om het fragmentatie niveau op te heffen. Voor kleine databases maken we ons niet druk over het aantal pagina’s tijdens het herbouwen van de index, maar voor grote databases moeten we deze ook in overweging nemen.
3rd party tools
We kunnen eenvoudig de bestaande SQL index fragmentatie monitoren, analyseren en verwijderen met behulp van de ApexSQL Defrag. We kunnen meerdere instances en databases beheren in een grafische tool. We krijgen de volgende voordelen van deze tool.
- Het biedt een grafische user interface om de index fragmentatie te monitoren en te analyseren
- We kunnen index onderhoud doen voor alle SQL Server instances en databases
- Het biedt de mogelijkheid om de aangepaste rapporten te configureren op basis van onze eisen
- We kunnen beleid configureren om index onderhoudstaken te controleren en uit te voeren volgens de aangepaste statistieken
- We kunnen (snel of diep) index fragmentatie analyseren, instellen vulfactor, online index onderhoud
- We kunnen de rapporten in de gewenste formaten (CSV of HTML) voorbereiden
Zodra u de ApexSQL Defrag tool installeert en een instantie configureert om te monitoren, toont het snel de details SQL index fragmentatie status.
We moeten SQL index rebuild of reorganize operaties vermijden als het niet nodig is. Als we erg grote indexen hebben, dan kan het analyseren veel tijd en systeembronnen kosten. ApexSQL Defrag geeft de optie om de fragmentatie te controleren.
- Beperkt: In deze scan mode verzamelt SQL Server beperkte informatie over de fragmentatie. Het veroorzaakt geen performance problemen voor het systeem. Dit is de standaard modus in ApexSQL Defrag
- Sampled: In deze mode, neemt het een sample van de SQL index en verzamelt de fragmentatie informatie
- Gedetailleerd: We krijgen de gedetailleerde kennis over alle indexpagina’s; het kan echter enige overhead aan de systeembronnen veroorzaken, we kunnen het gebruiken als we de hoge fragmentatie waarnemen met de bovenstaande scanmodi
Op dezelfde manier kunnen we het fragmentatieniveau instellen in de categorie Hoog, Gemiddeld en Laag.
U kunt ook uw gewonnen fragmentatiedrempel instellen om de indexen te analyseren.
Zodra we de resultaten hebben geanalyseerd, klikt u met de rechtermuisknop op de specifieke SQL-index en kunt u uit meerdere opties kiezen.
- Analyseren (snel)
- Analyseren (diep)
- Reorganiseren
- Online heropbouwen
- Vulfactor instellen
- We kunnen pauzeren, stoppen of annuleren als er een taak voor die index wordt uitgevoerd. Het is handig als we performance problemen of blokkering zien als gevolg van een bepaalde index, kunnen we die job zelf annuleren
ApexSQL Defrag maakt het mogelijk om de policies te creëren vanuit de voorgedefinieerde templates of door de aangepaste parameters. De sjablonen zijn ook geschikt voor de meeste SQL index defragmentatie eisen.
Met behulp van deze sjablonen kunnen we besluiten om alle indexen of indexen op basis van drempelniveau in offline of online modus te defraggen. Ik wil bijvoorbeeld het beleid maken om online de top 50% van de meest gefragmenteerde indexen boven de 30% te herbouwen of te reorganiseren als de index meer dan 10% gefragmenteerd is.
We kunnen ook de drempelwaarde voor bronnen configureren met betrekking tot CPU, geheugenbelasting, transactieloggebruik en actieve transacties. Dit niveau van controle hebben we niet bij het onderhoud van indexen met behulp van de onderhoudswizard-taken of aangepaste scripts.
Als de bron bezet is, kunnen we ook de timing voor het opnieuw proberen instellen. Ik heb de eisen gezien bij sommige gebruikers die het onderhoud niet willen uitvoeren nadat hun magere database gebruiksperiode voorbij is. Als we het onderhoud uitvoeren, moeten we de taak handmatig stoppen, of we moeten een andere SQL-agenttaak maken om de indexonderhoudtaak op een bepaald tijdstip te stoppen.
ApexSQL Defrag biedt overhead voor het configureren en bewaken van meerdere taken. We kunnen de index onderhoudstaak annuleren na ‘N’ aantal uren.
In de bovenstaande screenshot kunt u zien dat we SQL index onderhoud verder kunnen aanpassen door het fragmentatie niveau, Index Grootte en ook het aantal pagina’s. U kunt de locked object vertraging definiëren met een bepaalde tijd. Soms willen we de index uitsluiten waar we index paginatellingen hebben die kleiner of groter zijn dan gespecificeerde tellingen.
U kunt de wijzigingen aanbrengen en deze configureren als een sjabloon om opnieuw te gebruiken. Nadat we index onderhoud hebben uitgevoerd, krijg je in het Activiteiten tabblad een uitstekend overzicht van de index fragmentatie stats voor en na het onderhoud. Het is essentieel om te weten of het index fragmentatie niveau onder controle is of niet na het onderhoud. Meestal moeten we het fragmentatieniveau opnieuw vastleggen, maar het bespaart ons de overhead met deze informatie.
In de sectie Rapporten kunnen we de rapporten van het serverniveau bekijken, algemeen rapport.
We kunnen ook een mooi overzicht krijgen van de top 10 geclusterde en niet-geclusterde indexen.
We zijn ook geïnteresseerd in het CPU- en geheugengedrag tijdens het uitvoeren van het indexonderhoud. We kunnen deze nuttige informatie verkrijgen en ook een oogje houden op de systeembronnen.
We kunnen alle rapporten exporteren en de exportoptie configureren. We willen misschien dat er beperkte informatie wordt geëxtraheerd terwijl we het onderzoeken. ApexSQL Defrag geeft u de mogelijkheid om te kiezen welke informatie wordt weergegeven zoals grafieken, statistieken, SQL index statistiek grafieken die we willen opnemen in het rapport.
Conclusie:
ApexSQL Defrag tool maakt het gemakkelijk voor de DBA’s om de administratieve taak uit te voeren met een betere SQL index bewaking en onderhoud. U krijgt alle informatie is een grafisch hulpmiddel met aangepaste visuals, beleid samen met diverse informatieve rapporten.