sql >> Database >  >> RDS >> Sqlserver

Verbeter de afstemming van SQL Server-prestaties met deze 3 tips

Zoals iedereen die databases beheert maar al te goed weet, is het afstemmen van de prestaties van SQL Server een cruciale functie om optimale prestaties te garanderen. Omdat prestaties afhankelijk zijn van verschillende factoren, zoals geheugen, configuratie, queryontwerp en resourcegebruik, is het isoleren van de hoofdoorzaak van prestatievermindering geen sinecure.

In plaats van te wachten op prestatieproblemen, zorgt het proactief afstemmen van SQL Server ervoor dat uw SQL-instructies zo efficiënt mogelijk worden uitgevoerd door SQL te helpen de snelste route in en uit te vinden om uw queryresultaten te leveren.

Als u worstelt met trage prestaties - of u bent niet iemand die gewoon wacht tot er zich problemen voordoen - zijn hier drie belangrijke gebieden waarop u uw SQL Server-prestaties kunt afstemmen om optimale prestaties en gezondere systemen te bereiken.

Tip #1:Optimaliseer uw TempDB

Onjuist geconfigureerde TempDB is een veelvoorkomende boosdoener als we kijken naar prestatievermindering. Als u regelmatig uw TempDB vult, is het tijd om te kijken wat er moet veranderen.

Bekijk eerst de TempDB-grootte. Er is geen vaste regel over hoe groot het zou moeten zijn, maar een goede vuistregel is om TempDB op 25 procent van uw grootste database of dezelfde grootte als uw grootste index te houden. Dit voorkomt dat de TempDB moet worden verhoogd tijdens het opnieuw opbouwen.

Met TempDB, hoe sneller de schijf, hoe beter. Wanneer TempDB op een langzame schijf of op dezelfde schijf als het besturingssysteem wordt geplaatst, ziet u gegarandeerd problemen met de databaseprestaties. Bewaar TempDB indien mogelijk op een speciale lokale SSD. Als dat niet mogelijk is, is de volgende beste optie om het op zijn eigen speciale volume te houden met voldoende vooraf toegewezen schijfruimte.

Het is ook belangrijk om gegevens en logbestanden gescheiden te houden en een grote vaste waarde in te stellen voor TempDB autogrowth. Anders wordt u elke keer dat TempDB vol raakt met onnodige overhead geconfronteerd.

Beheersing van het aantal TempDB-gegevensbestanden draagt ​​bij aan TempDB-optimalisatie. Maar de grote vraag is, hoeveel TempDB-gegevensbestanden heb je nodig? In het ideale geval hebt u één TempDB-gegevensbestand voor elke logische CPU, maar niet meer dan acht in totaal (met enkele uitzonderingen). Als u bijvoorbeeld vier logische CPU's hebt, hebt u vier TempDB-gegevensbestanden nodig. Als je 12 logische CPU's hebt, kun je acht TempDB-gegevensbestanden hebben.

Tip #2:Voorkom prestatieknelpunten

Er zijn drie hoofdtypen van SQL Server-prestatieknelpunten die bijdragen aan slechte prestaties:CPU, geheugen en I/O. De oorzaken, symptomen en diagnose verschillen per type knelpunt, dus hier is een beknopte handleiding voor waar u op moet letten:

CPU-knelpunten

Oorzaak: Onvoldoende hardwarebronnen

Symptomen: Constant hoog processorgebruik

Statistieken om te controleren:  % Processortijd, batchverzoeken/sec, SQL-compilaties/sec en SQL-hercompilaties/sec

Geheugenknelpunten

Oorzaak:  Beperkingen in beschikbaar geheugen en geheugendruk veroorzaakt door SQL Server, systeem of andere applicatie-activiteit

Symptomen:  Trage reactiesnelheid van applicaties, algehele systeemvertraging en applicatiecrashes

Statistieken om te controleren:  Beschikbaar geheugen (KB), totaal servergeheugen (KB), doelservergeheugen (KB), pagina's/sec, checkpointpagina's/sec, luie schrijfbewerkingen/sec en buffercache-hitverhouding

I/O-knelpunten

Oorzaak:  Overmatig lezen en schrijven van databasepagina's van en naar schijf

Symptomen: Lange reactietijden, vertragingen van applicaties en time-outs voor taken

Statistieken om te controleren:  Gemiddelde schijfwachtrijlengte, gemiddelde schijfsec/lees, gemiddelde schijfsec/schrijftijd, %schijftijd, gemiddelde schijfleesbewerkingen/sec en gemiddelde schijfschrijfbewerkingen/sec

Tip #3:Zorg ervoor dat indexen goed zijn ontworpen

Indexen zijn een geweldige manier om bepaalde SQL Server-bewerkingen te versnellen, maar alleen als ze goed zijn ontworpen. Slecht ontworpen indexen hebben het tegenovergestelde effect en zijn een zekere manier om uw SQL Server-prestaties te vernietigen.

Als u deze vier gebieden op de juiste manier instelt, kunt u ervoor zorgen dat indexen goed zijn ontworpen en de prestaties van SQL Server niet nadelig beïnvloeden.

Tafelgrootte

Niet elke tabel is een goede kandidaat voor indexering. Als een tabel te klein is, is het zelfs veel efficiënter voor SQL Server om de hele tabel te doorzoeken in plaats van door indexen te zoeken. Het tegenovergestelde geldt natuurlijk voor grote tafels, dus u moet rekening houden met potentiële overhead wanneer u beslist welke tafels baat hebben bij indexen.

Indextypen

Technisch gezien kan elke databasetabel één geclusterde index hebben en een oneindig aantal niet-geclusterde indexen, maar je weet wat ze zeggen over "Gewoon omdat je iets kunt doen"...

Te veel niet-geclusterde indexen kunnen de invoeg- en updatebewerkingen aanzienlijk vertragen, dus vasthouden aan één geclusterde index en het minimum aantal absoluut essentiële niet-geclusterde indexen is een veel betere ontwerpkeuze.

Indexopslag

Tijdens de ontwerpfase is het selecteren van de juiste opslagcriteria voor indexen cruciaal voor de I/O-prestaties. Gepartitioneerde geclusterde indexen en niet-geclusterde indexen kunnen worden opgeslagen in dezelfde bestandsgroep als de hoofdtabel, of ze kunnen worden opgeslagen in een andere bestandsgroep. Het opslaan van een niet-geclusterde index in een bestandsgroep die zich op een ander schijfstation bevindt, kan de prestaties verbeteren van query's die het gebruiken, omdat het niet wordt beïnvloed door het gelijktijdig lezen van de gegevens en SQL-indexpagina's op verschillende schijfstations.

VULFACTOR

FILLFACTOR specificeert het percentage ruimte dat op elke gegevenspagina zal worden gevuld bij het maken van een index. FILLFACTOR-waarden kunnen variëren van 0 procent (geen van de gegevenspagina is gevuld) tot 100 procent (de gegevenspagina is volledig gevuld). Selecteer bij het ontwerpen van uw index een FILLFACTOR-waarde die het paginagebruik optimaliseert en het risico op overmatige indexfragmentatie minimaliseert.

Door de prestatieafstemming van SQL Server tot een onderdeel van uw standaardroutine te maken, kunt u ervoor zorgen dat uw databases optimaal presteren. Door deze drie eenvoudige stappen op te nemen in uw reguliere SQL Server-onderhoudsplannen, zullen de snelheid en prestaties voor uw gebruikers merkbaar verbeteren.


  1. Een selectie maken met array bevat waardeclausule in psql

  2. Tabellen zoeken die een specifieke kolom bevatten in SQL Server

  3. Simuleren CREATE DATABASE ALS NIET BESTAAT voor PostgreSQL?

  4. Vind alle niet-numerieke waarden in een kolom in MariaDB