Prestandaoptimering
Stora databasservar med en massa samtidig trafik, är precis som morgonrusningen i en storstad. Det är sällan en orsak till trafikstockningarna utan många små hinder som måste identifieras och lösas en efter en.
Ett äldre system har till slut ofta en väldigt stor ryggsäck att släpa runt, inte nog med att data i systemet konstant växer (och vi har inte tagit tag i den där arkiveringsfunktionen vi ofta pratat om att vi behöver), utan vi har genom åren bara lagt till fler och fler index för att hantera de små förändringarna i datafördelning och användning.
Som tur är finns alla verktyg och information vi behöver inbyggd i den fantastiska SQL motorn.
Först en inledande hälsokontroll med hjälp av Microsoft TigerTeams verktyg, för att kontrollera att det inte gjorts några misstag vid konfigureringen av SQL instansen.
Sedan börjar arbetet att samla in och läsa av var mest belastning i systemet kommer ifrån, så att vi kan skapa oss en idé om var vi skall börja.
Åtgärdsförslagen delas in i 2 grupper, det vi kan förändra utan påverkan på applikationer och vilka förändringar man behöver antingen ändra på logiken i frågorna eller andra detaljer i koden.
Det är inte ovanligt att man hittar mycket trafik som faktiskt inte borde finnas längre, kan vara allt från gamla integrationer som inget system använder till upptäcker om att moduler i system som inte används är aktiverade.
En del åtgärder kan vara för delar av systemet som fungerade fint i början, när datavolymerna i systemet var små men som nu växt sig stora och vi behöver skapa relevanta index eller kanske rensningsfunktioner.
Att se till att SQL motorn har uppdaterad statistik är den enda magiska trollstaven jag känner till. Blir speciellt märkbar i system där man nästan uteslutande vill läsa den senast införda informationen.
SQL motorn sköter det väldigt bra på ett balanserat sätt men behöver vår detaljkunskap på hur systemet används, så att vi kan schemalägga små snabba statistikuppdateringar för hjärtat i systemet för att undvika ofördelaktiga exekveringsplaner.
Samtal med användare
Ett väldigt effektivt sätt att förbättra för användarna av ett system är att helt enkelt sitta brevid dem en stund när de arbetar i systemet och genom frågor ta reda på vilka funktioner just de upplever problematiskt. Dessutom kommer man hitta att de har lärt sig olika typer av workarounds för att undvika tidstjuvar i systemet.
När man sitter brevid användaren, är det lätt att samtidigt spåra den trafik som genereras när de exempelvis klickar på en speciellt funktion. Då kan jag analysera just den delen och se ifall vi kan förbättra prestandan av den frågan utan att göra några ändringar i applikationen.
Värdefullt att kunna knyta specifika SQL-frågor till användaraktiviteter, som ett extra verktyg när vi skall prioritera vad som är viktigt att det går snabbt.
Den här metoden är suverän och alldeleds för underutnyttjad enligt min erfarenhet.
Innehåll
- Konfigurationskontroll
- Monitorering Xevent
- Skripts med DMW analys
- Index konsolidering
- Analys av Heaps
- Analys av SQL-frågor
- Intervju av användare
- Utbildning av utvecklare
- Analys Exekveringsplaner