En av de mest kritiska variablerna för databasens prestanda är SQL-indexfragmentering. Om fragmenteringsnivån inte hanteras på rätt sätt kan vi drabbas av blockering, dödlägen, IO-problem och problem med diskspill. Det kan också leda till en felaktig exekveringsplan.
DMVs
I SQL Server kan vi använda DMV sys.dm_db_index_physical_stats för att få information om indexfragmenteringsnivå, sidantal och indextyper med hjälp av detta.
SSMS
Vi kan också använda de inbyggda SQL Server-rapporterna ”Index Physical Statistics” i SSMS
Vi får indexfysikalisk statistik för databasen i följande format.
Vi är begränsade till att köra den här rapporten på databasnivå, och om vi har flera databaser i instansen och många instanser att hantera, blir det tids- och resurskrävande att samla in detaljerna, analysera statusen baserat på vårt tröskelvärde och sedan besluta om att bygga om eller omorganisera SQL-indexet.
Anpassade skript
Vi kan också använda anpassade skript för att upptäcka och åtgärda fragmenteringsproblem, men det är också en komplicerad process att upprätta och analysera resultaten manuellt. Vi kanske vill ha all denna information på en för att centralisera plats och sedan besluta om policyn för indexunderhåll. Vi kan använda kommandona Alter Index för att ta bort fragmenteringsnivån. För små databaser bryr vi oss inte så mycket om sidantalet när vi bygger om indexet, men för stora databaser måste vi ta hänsyn till dessa också.
3:e parts verktyg
Vi kan enkelt övervaka, analysera och ta bort befintlig SQL-indexfragmentering med hjälp av ApexSQL Defrag. Vi kan hantera flera instanser och databaser i ett grafiskt verktyg. Vi får följande fördelar från det här verktyget.
- Det ger ett grafiskt användargränssnitt för att övervaka och analysera indexfragmenteringen
- Vi kan göra indexunderhåll för alla SQL Server-instanser och databaser
- Det ger möjlighet att konfigurera de anpassade rapporterna utifrån våra krav
- Vi kan konfigurera policyer för att kontrollera och utföra indexunderhållsuppgifter enligt de anpassade mätvärdena
- Vi kan analysera (snabb eller djup) indexfragmentering, Vi kan förbereda rapporterna i önskat format (CSV eller HTML)
När du har installerat ApexSQL Defrag-verktyget och konfigurerat en instans för övervakning, visar det snabbt detaljerna SQL-indexfragmenteringsstatus.
Vi bör undvika att bygga om eller omorganisera SQL-index om det inte behövs. Om vi har mycket stora index kan det ta lång tid och mer systemresurser att analysera. ApexSQL Defrag ger möjlighet att kontrollera fragmenteringen.
- Begränsat: I det här skanningsläget samlar SQL Server in begränsad information om fragmenteringen. Det orsakar inga prestandaproblem för systemet. Det är standardläge i ApexSQL Defrag
- Samplat: I det här läget tar den en provdel av SQL-indexet och samlar in fragmenteringsinformation
- Detaljerad: I det här läget tar den en provdel av SQL-indexet och samlar in fragmenteringsinformation
- Detaljerad: Vi får detaljerad kunskap om alla indexsidor; det kan orsaka viss överbelastning av systemresurserna, men vi kan använda det om vi observerar hög fragmentering med ovanstående skanningslägen
På samma sätt kan vi ställa in fragmenteringsnivån i kategorierna Hög, Medel och Låg
Du kan också ställa in din egen tröskel för fragmentering för att analysera indexen.
När vi har analyserat resultatuppsättningen högerklickar vi på det särskilda SQL-indexet och du kan ha flera alternativ att välja.
- Analysera (snabbt)
- Analysera (djupt)
- Omorganisera\Rebygg\Rebygg online
- Ställ in fyllnadsfaktor
- Vi kan pausa, stoppa eller avbryta om något jobb är igång för det indexet. Det är användbart om vi ser några prestandaproblem eller blockering på grund av ett visst index, vi kan avbryta det jobbet själv
ApexSQL Defrag gör det möjligt att skapa policyer från de fördefinierade mallarna eller med hjälp av de anpassade parametrarna. Mallen är också lämplig för de flesta krav på defragmentering av SQL-index.
Med hjälp av dessa mallar kan vi bestämma oss för att defragmentera alla index eller index baserat på tröskelnivå i offline- eller onlineläge. Till exempel vill jag skapa en policy för att återskapa online topp 50 % mest fragmenterade index över 30 % eller omorganisera om de är fragmenterade över 10 %.
Vi kan också konfigurera resurströskeln när det gäller CPU, minnesbelastning, användning av transaktionslogg och aktiva transaktioner. Vi får inte den här nivån av kontroll på indexunderhållet med hjälp av jobben i underhållsguiden eller anpassade skript.
Om resursen är upptagen kan vi också ställa in tidpunkten för omprövning. Jag har sett kraven hos vissa användare som inte vill utföra underhållet när deras magra databasanvändningsperiod är över. Om vi utför underhållet måste vi stoppa jobbet manuellt, eller så måste vi skapa ett annat SQL-agentjobb för att stoppa indexunderhållsjobbet vid en viss tidpunkt.
ApexSQL Defrag ger overhead för att konfigurera och övervaka flera jobb. Vi kan anpassa att avbryta indexunderhållsjobbet efter ”N” antal timmar.
I skärmdumpen ovan kan du se att vi ytterligare kan anpassa SQL-indexunderhållet genom fragmenteringsnivån, indexstorleken och sidantalet också. Du kan definiera fördröjningen av det låsta objektet med en viss tid. Ibland vill vi utesluta index där vi har indexsidantal som är mindre eller större än angivna antal.
Du kan göra ändringarna och konfigurera dem som en mall för återanvändning. När vi har utfört indexunderhåll får du i fliken Aktiviteter en utmärkt översikt över indexfragmenteringsstatistiken före och efter underhållet. Det är viktigt att veta om indexfragmenteringsnivån är under kontroll eller inte efter underhållet. Vi behöver vanligtvis fånga fragmenteringsnivån igen, men det sparar overhead för oss med den här informationen.
I avsnittet Rapporter kan vi visa rapporterna från servernivå, övergripande rapport.
Vi kan också få en fin bild av de tio bästa klustrade och icke-klustrade indexen också.
Vi är också intresserade av att känna till CPU- och minnesbeteendet när indexunderhållet körs. Vi kan få denna användbara information och hålla ett öga på systemresurserna också.
Vi kan exportera alla rapporter och konfigurera exportalternativet. Vi kanske vill att begränsad information ska extraheras när vi utforskar den. ApexSQL Defrag ger dig möjlighet att välja vilken information som ska visas såsom diagram, statistik, SQL-indexstatistik diagram vi vill inkludera i rapporten.
Slutsats:
ApexSQL Defrag verktyget gör det enkelt för DBA:s att göra den administrativa uppgiften med bättre SQL-index övervakning och underhåll. Du får all information är ett grafiskt verktyg med anpassade bilder, policys tillsammans med olika informativa rapporter.