sql >> Database >  >> RDS >> Sqlserver

5 trucs voor het garanderen van piekprestaties van SQL Server

Databasebeheerders dragen veel petten achter de schermen - van capaciteitsplanning tot beveiliging tot gegevensherstel. Misschien wel de meest zichtbare verantwoordelijkheid van de DBA is de prestatiebewaking van SQL Server. Hoewel de dagelijkse taken die gepaard gaan met het onderhouden van een goed presterend systeem misschien onopgemerkt blijven door de buitenwereld, kunt u er maar beter van uitgaan dat mensen zullen gaan opletten wanneer de prestaties niet ideaal zijn.

Databasestoringen, trage reactietijden en andere gebruikersproblemen zijn slecht voor het bedrijfsleven. En omdat de prestaties van SQL Server (of het gebrek daaraan) volledig in het DBA-domein vallen, zijn slecht presterende databases slecht voor uw werkzekerheid.

Afgezien van de dreiging van werkloosheid, is het garanderen van de topprestaties van SQL Server cruciaal voor het soepel functioneren van uw organisatie. Daarom hebben we vijf trucs samengesteld die DBA's moeten weten om de prestaties van SQL Server te optimaliseren.

Routine taken en onderhoud automatiseren

Tegenwoordig is er voor een DBA weinig reden om veel dagelijkse taken en onderhoudscontroles handmatig uit te voeren. De huidige SQL Server-tools voor prestatiebewaking kunnen automatisch schijfruimte bewaken, foutenlogboeken inspecteren en back-ups verifiëren. U kunt zelfs systeemwaarschuwingen instellen die u niet alleen laten weten dat er een probleem is, maar ook informatie geven over de ernst en het type probleem.

Een van de belangrijkste voordelen van deze monitoringtools is dat veel van de prestatiebewakingsfuncties toegankelijk zijn via uw mobiele apparaat, waardoor het oplossen van problemen veel flexibeler wordt. U kunt uw systeem vrijwel overal en op elk moment controleren en sorteren.

Prestatiestatistieken bijhouden

Natuurlijk is het belangrijk dat uw SQL Server-hulpprogramma's voor prestatiebewaking actuele problemen opsporen en oplossen, maar het is ook waardevol om de prestaties uit het verleden bij te houden. Door de databaseprestaties in de loop van de tijd te bewaken en te analyseren, kunt u trends identificeren en anticiperen op toekomstige prestatieproblemen. Door de prestatiegeschiedenis bij te houden, kunt u zien of de prestaties in een bepaalde periode beter of slechter zijn.

Workload-analyse is een andere manier om prestatiestatistieken te verkrijgen waarmee u de prestaties van SQL Server kunt verbeteren. Voer een analyse uit om te bepalen welke invloed een gebruiker, database, host of SQL-instructie op uw werklast heeft. Als u een bron isoleert die een negatieve invloed heeft op het systeem, wordt het veel gemakkelijker om de juiste stappen te nemen om het probleem op te lossen.

Identificeer de hoofdoorzaak van knelpunten

Zoals hierboven vermeld, is het, zodra u de bron van een knelpunt of prestatiemoordenaar isoleert, veel gemakkelijker om het probleem op te lossen. Enkele veelvoorkomende bronnen van knelpunten en symptomen om op te letten zijn:

  • CPU-problemen:SQL Server belast de processor
  • Geheugenproblemen:langere uitvoeringstijden van de query's
  • Opslagproblemen:extreme activiteit op de schijven en lange wachttijden per I/O
  • I/O-problemen:de WRITELOG-wachttijd is hoog vergeleken met de totale wachttijd

Als je eenmaal je bottleneck hebt geïdentificeerd, zijn er een paar go-to-fixes die je kunt proberen en die vaak zorgen voor veelvoorkomende prestatieproblemen, waaronder:

  • SQL Server-afstemming:Isoleer de specifieke query die is vertraagd, de specifieke wachttijd die de vertraging veroorzaakt en de tijdsimpact van het knelpunt
  • Verwijder verouderde en dubbele indexen:versnelt zoekopdrachten omdat de optimizer geen rekening hoeft te houden met meerdere indexen bij het analyseren van de queryprestaties en het bepalen van een plan.
  • Fragmentatie oplossen:het periodiek opnieuw opbouwen of defragmenteren van uw indexen zal de prestaties verbeteren door het aantal verspreide of gedeeltelijk gevulde gegevenspagina's die SQL Server moet lezen te verminderen.

Voer routinematige prestatiecontroles uit

Voorkomen is bijna altijd beter dan genezen. Gebruik gezondheidscontroles om actuele en potentiële problemen binnen het systeem te identificeren. Met gezondheidscontroles kunt u problemen met beveiliging, noodherstel, geheugen, I/O en configuratie opsporen voordat ze grote prestatieproblemen veroorzaken.

Regelmatige gezondheidscontroles moeten het volgende omvatten:

  • Controleren op ontbrekende indexen:ontbrekende indexen zorgen ervoor dat SQL Server traag reageert omdat het in elk record naar gegevens moet zoeken. Maar wees niet te snel met het toevoegen van ontbrekende indexen; het toevoegen van onnodige indexen kan ook de prestaties negatief beïnvloeden.
  • Kijken naar onevenredige niveaus van ad-hocquery's:het is geen probleem om af en toe ad-hocquery's te gebruiken. Maar als ze te vaak worden gebruikt, gaan de prestaties achteruit. SQL Server hergebruikt deze instructies niet, dus de procedurecache wordt opgeblazen, waardoor de buffercache gegevens leegmaakt. SQL Server moet dan gegevens van de schijf (langzaam) lezen in plaats van uit het geheugen.
  • Op zoek naar verouderde statistieken:de SQL Server-queryoptimalisatie gebruikt statistieken om de geschatte kosten van de bewerkingen te berekenen. Verouderde statistieken kunnen ertoe leiden dat de query-optimizer een suboptimaal uitvoeringsplan selecteert.

Upgrade naar de nieuwste versie van SQL Server

Deze voelt nogal voor de hand liggend, maar als je dat nog niet hebt gedaan, upgrade dan naar de nieuwste versie van SQL Server. SQL Server 2000, 2005 en 2008 worden niet langer actief ontwikkeld en de nieuwere versies hebben veel functies die de prestaties zeker zullen verbeteren. Deze functies omvatten de nieuwste versie van de SQL Server-queryoptimalisatie, nieuwe CPU-instructiesets en natuurlijk bugfixes.


  1. Metagegevens met betrekking tot recordtypen op PL/SQL-pakketniveau

  2. MySQL DROP-KOLOM

  3. psql:FATAL:rol postgres bestaat niet

  4. Hoe maak ik een unieke beperking die ook nulls toestaat?