Het onderhouden van een goed presterende SQL Server is niet alleen essentieel voor de activiteiten van uw organisatie, maar ook voor uw klanten. Wanneer uw servers traag reageren, of helemaal niet reageren, verliest u omzet. Hier zijn drie belangrijke gebieden die u nauwlettend in de gaten moet houden om ervoor te zorgen dat uw SQL Server-prestaties optimaal zijn en manieren om de prestaties te verbeteren als uw statistieken aantonen dat u een probleem hebt.
Indexen
Als uw indexen goed werken, dragen ze bij aan een snel, soepel werkend systeem. Als uw indexen echter aan een van deze veelvoorkomende aandoeningen lijden, kan het zijn dat uw SQL Server-prestaties negatief worden beïnvloed.
Metriek om te controleren:vulfactor
Vulfactor is een instelling in SQL Server die indexen instrueert om elke pagina X procent te vullen. Het lijkt intuïtief dat u elke pagina voor 100 procent wilt vullen, maar in werkelijkheid kan overvullen van pagina's pagina-splitsingen veroorzaken. Als een beheerder een extra rij aan een volledige pagina toevoegt, verplaatst de nieuwe rij ongeveer de helft van de bestaande rijen naar een nieuwe pagina en wordt de nieuwe rij onder aan de eerste pagina toegevoegd.
Paginasplitsingen kunnen prestatieproblemen veroorzaken vanwege het toegenomen aantal I/O-bewerkingen en de kans op fragmentatie. Te veel ruimte op een pagina kan echter ook de prestaties schaden, omdat bronnen onnodig worden verbruikt.
Stel geen systeembrede waarde in om de beste prestatieresultaten van uw vulfactorinstellingen te krijgen. Bekijk uw indexen afzonderlijk en stel de vulfactor in op een geschikt niveau voor elke index. Indexen die vaak gefragmenteerd zijn, hebben bijvoorbeeld een andere vulfactorwaarde nodig dan indexen die bijna nooit worden gebruikt.
Metriek om te controleren:fragmentatie
Indexfragmentatie treedt op wanneer gebruikers records toevoegen en verwijderen. Dingen verplaatsen is een normaal onderdeel van de dagelijkse activiteiten van een database, maar na verloop van tijd beïnvloedt fragmentatie de prestaties. Fragmentatie kan een aantal problemen veroorzaken:
- Te veel lege ruimte op te veel pagina's vertraagt scans en gebruikt onnodig geheugen
- Nieuwe pagina's worden in de verkeerde volgorde toegevoegd, dus het duurt langer voordat de server gegevens vindt
Wanneer fragmentatie de prestaties begint te beïnvloeden, moet u Rebuild of Reorganize uitvoeren om de gefragmenteerde indexen op te schonen. Als u Rebuild uitvoert, wordt een nieuwe index gemaakt en wordt de extra lege ruimte verwijderd. Reorganize zet de leaf-pagina's op volgorde zodat de server de gegevens gemakkelijker kan vinden.
Buffercache
Wanneer SQL Server pagina's in buffercache kan lezen, zal uw reactietijd sneller zijn. De prestaties gaan achteruit wanneer de server naar de schijf moet om een pagina te vinden, omdat hij een reeks stappen moet doorlopen voordat de pagina wordt opgeslagen in de buffer en vervolgens wordt gelezen. Er zijn een aantal meetwaarden die u kunt bijhouden die ervoor zorgen dat de buffercache optimaal blijft presteren.
Metriek om te controleren:levensverwachting van pagina's
Page Life Expectancy (PLE) is hoe lang een pagina in de buffercache blijft zonder te worden aangeroepen voordat deze wordt teruggestuurd naar schijf. Het verhogen van PLE zal de prestaties verbeteren, maar het gebruikt ook geheugen dat nodig kan zijn voor andere functies. Als je PLE gaat aanpassen, moet je uitzoeken hoeveel geheugen je kunt gebruiken zonder ergens anders de prestaties te beïnvloeden.
Metriek om te controleren:buffer cache hit ratio
De hitratio van de buffercache is het percentage pagina's dat zich in de bufferpool bevindt ten opzichte van alle paginaverzoeken. De hitratio van de buffercache moet hoger zijn dan 90 voor de beste prestaties (d.w.z. SQL Server hoeft niet van schijf te lezen). Wees voorzichtig bij het analyseren van de hitratiogegevens van uw buffercache. Een kleine afname van de ratio duidt mogelijk niet op een echt probleem. Analyseer de gegevens in combinatie met PLE om te bepalen of er daadwerkelijk een prestatieprobleem bestaat.
Optimalisatie van zoekopdrachten
Trage en slecht presterende query's zijn een van de meest voorkomende prestatieproblemen van SQL Server. Er zijn veel mogelijke redenen waarom uw zoekopdrachten niet goed worden uitgevoerd, dus het kan moeilijk zijn om een exacte oorzaak aan te wijzen. Maar er zijn een paar dingen die u vroeg in uw onderzoek kunt proberen en die de queryprestaties met minimale inspanning kunnen verbeteren.
Metriek om te controleren:indexscan
Het controleren van de status van uw SQL Server zou een vast onderdeel van uw DBA-taken moeten zijn. Wanneer query's langzaam worden uitgevoerd, besteedt u wat extra tijd aan de query-optimizer. Een belangrijk ding om te controleren is of de SQL Server-indexscan problemen heeft die u moet oplossen.
Een andere potentiële prestatiemoordenaar is dat indexscans vaker worden uitgevoerd dan nodig is. Indexscannen duurt veel langer dan index zoeken omdat de query elke rij moet scannen op zoek naar bruikbare gegevens. Stel uw query-optimizer zo in dat deze vaker naar indexen zoekt dan dat deze worden gescand.
Het herschrijven van een problematische query is een andere manier om de prestaties te verbeteren. Soms zal het vereenvoudigen van query's het gedeelte verwijderen dat ervoor zorgt dat de query vastloopt. U kunt ook proberen indexen toe te voegen om zoekopdrachten te versnellen, maar dit werkt in sommige gevallen beter dan in andere.
Het toevoegen van indexen is een goede oplossing voor velden die te maken hebben met zoeken, groeperen of sorteren; veelgebruikte velden; en velden met unieke waarden. Het is over het algemeen niet effectief om indexen toe te voegen aan velden met dubbele waarden zoals ja/nee of voor kleine tabellen.
Het bewaken van SQL Server-prestaties is van cruciaal belang voor het onderhouden van goed presterende databases. Uw SQL Server op topsnelheid houden kan alleen worden bereikt door ijverige aandacht voor prestatiestatistieken. Voeg de hierboven besproken meetwaarden toe aan uw onderhoudschecklist om prestatieproblemen met SQL Server vroegtijdig te identificeren en te corrigeren.