sql >> Database >  >> RDS >> Sqlserver

Meet u de prestaties van SQL Server met deze statistieken?

Applicatie- en systeemprestaties spelen een grote rol in hoe een gebruiker de waarde van uw product en de competentie van uw bedrijf waarneemt. Als dezelfde pagina constant een time-out heeft of als het een eeuwigheid duurt om toegang te krijgen tot een kritiek rapport, zullen de prestaties van uw databasesysteem een ​​vertrouwensprobleem voor uw organisatie veroorzaken.

Hoge beschikbaarheid en betrouwbare prestaties zijn essentieel om klanten en interne systeemgebruikers tevreden te houden, en ze kunnen zelfs uw bedrijfsresultaten beïnvloeden. Met deze doelen in gedachten is het implementeren van een uitgebreide strategie voor prestatiebewaking van SQL Server een must.

Voordelen van SQL Server Performance Monitoring

Het meest aangeprezen voordeel van prestatiebewaking is het gemak van het oplossen van problemen en het oplossen van problemen. Een goed geconfigureerde SQL Server-monitoringtool is de meest efficiënte manier om server- en databaseproblemen snel te vinden en op te lossen voordat ze gevolgen hebben voor eindgebruikers of grote, dure problemen worden.

Naast het handhaven van de systeemgezondheid, kan het implementeren van prestatiebewaking van SQL Server u helpen om uw infrastructuurkosten laag te houden. Een voorbeeld zijn onnodige opslagkosten. Wanneer de prestaties van SQL Server worden geoptimaliseerd, wordt de groei van de bestandsgrootte continu gecontroleerd. Een buitensporige toename van de bestandsgrootte activeert een waarschuwing, zodat het probleem kan worden opgelost voordat de schijfruimte opraakt en er extra middelen voor het probleem worden ingezet.

En als u kiest voor een cloudgebaseerde monitoringoplossing, kunt u de ROI nog verder verhogen door afscheid te nemen van de kosten van huisvesting en onderhoud van fysieke servers.

Houd deze statistieken bij om uw SQL Server-prestaties te verbeteren

We weten dat het monitoren van SQL Server-prestaties een geweldige strategie is om problemen op te lossen en geld te besparen, maar u zult niet het volledige voordeel halen uit uw SQL Server-monitoringtool tenzij u de juiste statistieken bijhoudt. Om optimale prestaties van SQL Server te krijgen, zijn hier vijf gebieden die u in de gaten wilt houden en de belangrijkste statistieken om van elk bij te houden.

1. Buffercache

De buffercache slaat kopieën op van recent gebruikte databasepagina's. SQL Server kijkt eerst in de cache, maar als het daar niet vindt wat het zoekt, gaat het naar de schijf. Het lezen van de schijf is traag, wat de prestaties negatief kan beïnvloeden.

Cache-hitratio

Cache hit ratio laat zien hoe vaak SQL Server pagina's uit de cache benadert. Hogere waarden geven aan dat de pagina's zijn geopend vanuit het geheugen en niet vanaf de schijf. Als je constant een lage cache-hit ratio ziet, controleer dan op een bottleneck in het systeemgeheugen.

Levensverwachting pagina

Het bewaken van de levensverwachting van pagina's laat zien hoe lang een pagina in het geheugen blijft in plaats van naar de schijf te gaan. Hoe langer de levensverwachting van de pagina, hoe beter de cache-hit ratio.

Checkpoint-pagina's/sec

SQL Server stelt controlepunten in om ruimte vrij te maken in de buffercache door regelmatig gewijzigde pagina's van de buffer naar de schijf te spoelen. Het aantal gewiste pagina's hangt af van de configuratie-instellingen en het servergebruik, dus het is belangrijk om een ​​vergelijkingsbasis in te stellen. Als u merkt dat er meer pagina's worden leeggemaakt, heeft u mogelijk een I/O-probleem.

2. Indexen

Database-indexen helpen bij het versnellen van bewerkingen in tabellen met veel records. Hoewel indexen een handig hulpmiddel zijn om sommige databasefuncties te verbeteren, zijn er inherente problemen met indexen die de prestaties kunnen verminderen als ze niet snel worden opgemerkt.

Fragmentatie

Indexfragmentatie treedt op wanneer records worden toegevoegd en verwijderd. Na verloop van tijd veroorzaken deze wijzigingen prestatieproblemen door te veel lege ruimte op te veel pagina's te laten en nieuwe pagina's in de verkeerde volgorde toe te voegen. Dit kan het scannen vertragen en overmatig geheugen gebruiken.

Door indexfragmentatie te controleren, weet u wanneer u Rebuild of Reorganize op een index moet uitvoeren om de fragmentatie te herstellen en de prestaties te verbeteren.

Vulfactor en paginasplitsingen

De instelling van de vulfactor laat uw indexen weten hoe vol elke pagina moet zijn. Als een pagina te vol is, treden er paginasplitsingen op; als een pagina niet vol genoeg is, verspil je bronnen.

Door paginasplitsingen bij te houden, kunt u bepalen wanneer een aanpassing van de opvulfactor nodig is. Stel voor de beste prestaties geen systeembrede vulfactorwaarde in. Evalueer individuele indexen en stel de vulfactor in op een geschikt niveau voor elke index.

3. T-SQL

Om de prestaties te optimaliseren, stapelt SQL Server SQL-statements in batches, compileert ze vervolgens in uitvoeringsplannen en slaat ze op in de cache voor hergebruik. Als SQL Server het uitvoeringsplan niet opnieuw kan gebruiken, wordt het plan opnieuw gecompileerd, wat veel CPU gebruikt en de prestaties verslechtert. Daarom is het het beste om het aantal hercompilaties van SQL-instructies zo laag mogelijk te houden.

Door de snelheid van SQL-compilatie en -hercompilatie te bewaken, kunt u zien of u bepaalde gebieden, zoals opgeslagen procedures en queryparameters, opnieuw moet configureren.

4. Blokkeren

Blokkering van SQL Server wordt veroorzaakt doordat meerdere clients en processen tegelijkertijd toegang vragen tot dezelfde bronnen. Als een bron al in gebruik is, is de toegang vergrendeld en is de bron niet beschikbaar voor volgende aanvragen. Dit zet het proces in de wacht totdat de bron wordt vrijgegeven en weer beschikbaar is.

Lock Waits

Verzoeken hoeven normaal gesproken niet op sloten te wachten, dus deze statistiek zou rond nul moeten blijven. Een toename van het aantal vergrendelingswachten duidt op een probleem met de laadtijd, dus u zult de oorzaak van het probleem moeten opsporen.

Geblokkeerde processen

Het volgen van geblokkeerde processen is een goede manier om veel e-mails te vermijden die u informeren over een geblokkeerd proces. Gebruik SQL Server Profiler om gegevens over geblokkeerde processen vast te leggen en bekijk het rapport regelmatig.

5. Gebruik van hulpbronnen

Het bijhouden van gebruiksstatistieken is een effectieve manier om niet alleen prestatieproblemen op te sporen, maar ook om te helpen bij de capaciteitsplanning.

Rij telt

Door het aantal rijen te bewaken, krijgt u direct, gemakkelijk te volgen inzicht in de hoeveelheid gegevens die in de loop van de tijd aan een bepaalde tabel zijn gekoppeld. Een onverwachte toename of afname van het aantal rijen zou moeten leiden tot een onderzoek naar de oorzaak.

Databasebestand I/O

Door I/O-statistieken te meten met databasebestanden, kunt u bijhouden hoeveel gegevens door een bepaald gegevensbestand worden geschreven en gelezen. Als u een mogelijk probleem waarneemt, kan deze statistiek u helpen de hoofdoorzaak te achterhalen. Het bijhouden van I/O van databasebestanden helpt ook bij infrastructuurplanning, omdat het u kan helpen toekomstige gegevensdoorvoer te voorspellen en resources dienovereenkomstig aan te passen.

Back-upgrootte transactielogboek

Wanneer een server crasht vanwege overbelasting, gebruikt SQL Server de databaselogboekrecords die zijn opgeslagen in virtuele logbestanden (VLF's) om te herstellen. Het is belangrijk om te controleren hoeveel VLF's zich in het transactielogboek bevinden, omdat te veel de herstelprocessen kunnen vertragen bij het herstellen na een storing.

De prestatiebewaking van SQL Server is een cruciaal onderdeel van de kwaliteitscontrolestrategie van een organisatie. Door een paar belangrijke prestatiestatistieken bij te houden, kunt u de reputatie krijgen uw gebruikers een systeem te bieden waarop ze kunnen vertrouwen en waarop ze kunnen vertrouwen; als u dit niet doet, kan uw systeem gewoon een andere buggy-toepassing worden waar gebruikers bang voor zijn.


  1. Wat zijn rij-, pagina- en tabelvergrendelingen? En wanneer zijn ze verworven?

  2. NIET IN vs NIET BESTAAT

  3. JDBC geeft lege resultaatset terug

  4. Hoe SQLCipher te implementeren bij gebruik van SQLiteOpenHelper