Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server
Wanneer u query's uitvoert op een SQL Server-exemplaar of een bepaalde toepassing, zijn alle query's traag. Voer de volgende stappen uit om het probleem op te lossen:
Stap 1: Problemen met toepassingen oplossen
Controleer de toepassingslaag. Voer een query uit vanuit de toepassing, voer deze handmatig uit op een SQL Server-exemplaar en bekijk hoe deze wordt uitgevoerd. Test op deze manier verschillende query's. Als query's sneller zijn op het SQL Server-exemplaar, kan het probleem zich in de laag van de toepassing of toepassingsserver bevinden.
Notitie
Houd rekening met de verschillen in queryprestaties tussen databasetoepassing en SSMS.
Als de toepassing wordt uitgevoerd op een andere server, controleert u de prestaties van de toepassingsserver (zie stap 2: problemen met het besturingssysteem oplossen voor het oplossen van problemen ). Mogelijk moet u contact opnemen met het ontwikkelteam van de toepassing om te controleren op problemen met de toepassing.
Stap 2: Problemen met het besturingssysteem oplossen
Controleer of het besturingssysteem waarop SQL Server wordt uitgevoerd, langzaam reageert. De muis beweegt bijvoorbeeld langzaam, vensters reageren niet gedurende lange perioden, extern bureaublad-toegang tot de server is traag of verbinding maken met een share op de server is traag.
Dit probleem kan worden veroorzaakt door een andere service of toepassing. Gebruik Perfmon om problemen op te lossen.
Zie de documentatie voor het oplossen van prestatieproblemen met Windows Server voor andere prestatieproblemen in het besturingssysteem.
Veelvoorkomende problemen zijn:
- Hoog CPU-gebruik voor alle CPU's
- Weinig fysiek of virtueel geheugen
- Trage I/O
- Configuratie van energiebeheerschema veroorzaakt een ondermaatse CPU-prestaties
Dit probleem kan worden veroorzaakt door andere toepassingen, het besturingssysteem of stuurprogramma's die op het systeem worden uitgevoerd.
Als u dit probleem wilt oplossen, gebruikt u Taakbeheer, Prestatiemeter of Resource monitor om dit probleem te identificeren. Zie de richtlijnen voor het oplossen van problemen met hoog CPU-gebruik voor meer informatie.
Stap 3: netwerkproblemen oplossen
Het probleem kan zich in de netwerklaag bevinden, wat trage communicatie tussen de toepassing en SQL Server veroorzaakt. Gebruik de volgende methoden om dit probleem op te lossen:
Een symptoom hiervan kan worden
ASYNC_NETWORK_IOgewacht aan de zijde van SQL Server. Zie Problemen met trage query's oplossen die het gevolg zijn van ASYNC_NETWORK_IO wachttype voor meer informatie.Neem contact op met uw netwerkbeheerder om te controleren op netwerkproblemen (firewall, routering, enzovoort).
Verzamel een netwerktracering en controleer op de gebeurtenissen voor het opnieuw instellen en opnieuw verzenden van het netwerk. Zie onregelmatige of periodieke netwerkproblemen voor het oplossen van problemen.
Schakel Prestatiemeteritems in om de netwerkprestaties op netwerkinterfaceniveau (NIC) te controleren. Er moeten nul genegeerde pakketten en foutpakketten zijn. Controleer de bandbreedte van de netwerkinterface:
- Netwerkinterface\Ontvangen pakketten verwijderd
- Network Interface\Packets Received Errors
- Netwerkinterface\Uitgaande pakketten verwijderd
- Netwerkinterface\Uitgaande fouten in pakketten
- Netwerkinterface\Totaal aantal bytes per seconde
- Netwerkinterface\Huidige bandbreedte
Stap 4: Problemen met hoog CPU-gebruik in SQL Server oplossen
Als CPU-intensieve query's worden uitgevoerd op het systeem, kunnen ze ervoor zorgen dat andere query's worden verhongerd van de CPU-capaciteit. Vaker kan een hoog CPU-gebruik dat afkomstig is van query's een indicatie zijn dat query's moeten worden geoptimaliseerd. Volg deze stappen om het probleem op te lossen:
- Zoek eerst uit of SQL Server een hoog CPU-gebruik veroorzaakt (met behulp van Prestatiemeteritems).
- Identificeer query's die bijdragen aan het CPU-gebruik.
- Statistieken bijwerken.
- Ontbrekende indexen toevoegen.
- Parametergevoelige problemen onderzoeken en oplossen.
- Problemen met SARGability onderzoeken en oplossen.
- Schakel zware tracering uit.
- Los spinlockconflicten op
SOS_CACHESTORE. - Configureer uw virtuele machine.
- Schaal het systeem omhoog door meer CPU's toe te voegen.
Zie Problemen met hoog CPU-gebruik in SQL Server oplossen voor gedetailleerde stappen voor probleemoplossing.
Stap 5: Problemen met overmatige I/O oplossen die traagheid veroorzaken in SQL Server
Een andere veelvoorkomende reden voor de waargenomen algehele traagheid van SQL Server-workloads zijn I/O-problemen. Traagheid van I/O kan van invloed zijn op de meeste of alle query's in het systeem. Gebruik de volgende methoden om het probleem op te lossen:
Controleren op hardwareproblemen:
- ONJUISTE SAN-configuratie (switch, kabels, HBA, opslag).
- I/O-capaciteit overschreden (verdeeld over het hele SAN-netwerk, niet alleen back-endopslag, I/O-doorvoer van alle servers die het SAN delen).
- Problemen met stuurprogramma's of firmware of updates.
Controleer op suboptimale SQL Server-query's die veel I/O veroorzaken en verzadiging van schijfvolumes met I/O-aanvragen.
- Zoek de query's die een groot aantal logische leesbewerkingen (of schrijfbewerkingen) veroorzaken en stem deze query's af om de I/O-schijf te minimaliseren met behulp van de juiste indexen.
- Houd statistieken bijgewerkt wanneer ze de queryoptimalisatie bieden met voldoende informatie om het beste plan te kiezen.
- Het opnieuw ontwerpen van query's en soms tabellen kan helpen met verbeterde I/O.
Filterstuurprogramma's: de I/O-reactie van SQL Server kan ernstig worden beïnvloed als stuurprogramma's voor bestandssysteemfilters intensief I/O-verkeer verwerken.
- Sluit gegevensmappen uit van antivirusscans en filterstuurprogrammaproblemen die zijn gecorrigeerd door softwareleveranciers om een impact op I/O-prestaties te voorkomen.
Andere toepassingen: Een andere toepassing op dezelfde computer met SQL Server kan het I/O-pad overbelasten met overmatige lees- of schrijfaanvragen. Deze situatie kan het I/O-subsysteem buiten de capaciteitslimieten duwen en I/O-traagheid veroorzaken voor SQL Server. Identificeer de toepassing en stem deze af of verplaats deze ergens anders om het effect op de I/O-stack te elimineren. Dit probleem kan ook worden veroorzaakt door toepassingen die worden uitgevoerd op andere computers, maar dezelfde SAN delen met deze SQL Server-machine. Werk samen met uw SAN-beheerder om I/O-verkeer te verdelen (zie Controleren op hardwareproblemen).
Stap 6: Geheugenproblemen oplossen
Weinig geheugen op het systeem in het algemeen of in SQL Server kan leiden tot traagheid wanneer query's wachten op geheugentoekenningen (RESOURCE_SEMAPHORE) of compileergeheugen (RESOURCE_SEMAPHORE_QUERY_COMPILE). Gebruik de volgende methoden om het probleem op te lossen:
Controleer op extern geheugen op besturingssysteemniveau met behulp van Prestatiemeteritems:
- Geheugen\Beschikbare MBytes
- Proces(*)\Werkset (alle exemplaren)
- Proces(*)\Privébytes (alle exemplaren)
Voor interne geheugenbelasting gebruikt u SQL Server-query's om query's uit te voeren op sys.dm_os_memory_clerks of DBCC MEMORYSTATUS te gebruiken.
Controleer het SQL Server-foutenlogboek op 701-fouten .
Zie Problemen met onvoldoende geheugen of onvoldoende geheugen in SQL Server oplossen voor gedetailleerde stappen voor probleemoplossing.
Stap 7: blokkeringsproblemen oplossen
Vergrendelingsverwerving wordt gebruikt om resources in een databasesysteem te beveiligen. Als vergrendelingen lange tijd worden verkregen en andere sessies uiteindelijk wachten op die vergrendelingen, krijgt u te maken met een blokkerend scenario.
Korte blokkering vindt altijd plaats op databasesystemen zoals SQL Server. Maar langdurige blokkering, met name wanneer de meeste of alle query's wachten op een vergrendeling, kan ertoe leiden dat de hele server als niet reageert.
Gebruik de volgende stappen om het probleem op te lossen:
Identificeer de hoofdblokkeringssessie door de kolom
blocking_session_idin sys.dm_exec_requests DMV-uitvoer of de kolomBlkByinsp_who2opgeslagen procedure-uitvoer te bekijken.Zoek de query('s) die door de blokblokkeringsketen worden uitgevoerd (wat vergrendelingen gedurende een langere periode vasthoudt).
Als er geen query's actief worden uitgevoerd op de hoofdblokkeringssessie, is er mogelijk een zwevende transactie vanwege toepassingsproblemen.
Ontwerp of stem de hoofdblokkeringsquery opnieuw in om sneller te worden uitgevoerd of verminder het aantal query's in een transactie.
Bekijk de transactieisolatie die in de query wordt gebruikt en pas deze aan.
Zie Sql Server-blokkeringsproblemen begrijpen en oplossen voor gedetailleerde probleemoplossing van blokkeringsscenario's.
Stap 8: Scheduler-problemen oplossen (niet-rendement, impasseplanner, niet-opleverende IOCP-listener, resourcemonitor)
SQL Server maakt gebruik van een coöperatief planningsmechanisme (Schedulers) om de threads beschikbaar te maken voor het besturingssysteem voor planning op de CPU. Als er problemen zijn met betrekking tot SQL Schedulers, kunnen SQL Server-threads stoppen met het verwerken van query's, aanmeldingen, afmeldingen, enzovoort. Als gevolg hiervan lijkt SQL Server mogelijk niet meer te reageren, gedeeltelijk of volledig, afhankelijk van het aantal planners. Scheduler-problemen kunnen het gevolg zijn van een breed scala aan problemen, waaronder productfouten, externe stuurprogramma's en hardwareproblemen.
Volg deze stappen om deze problemen op te lossen:
Controleer uw SQL Server-foutenlogboek op fouten zoals de volgende op het moment van het gemelde gebrek aan reactie van SQL Server:
-
*********************************************** * * BEGIN STACK DUMP: * 03/10/22 21:16:35 spid 22548 * * Non-yielding Scheduler * *********************************************** -
********************************************** * * BEGIN STACK DUMP: * 03/25/22 08:50:29 spid 355 * * Deadlocked Schedulers * * ******************************************** -
* ******************************************************************************* * * BEGIN STACK DUMP: * 09/07/22 23:01:04 spid 0 * * Non-yielding IOCP Listener * * ******************************************************************************* -
* ******************************************** * * BEGIN STACK DUMP: * 07/25/22 11:44:21 spid 2013 * * Non-yielding Resource Monitor * * ********************************************
-
Als u een van deze fouten vindt, identificeert u welke versie cumulatieve update (CU) van SQL Server u gebruikt. Controleer of er problemen zijn opgelost in CU's die na uw huidige CU zijn verzonden. Zie de meest recente updates die beschikbaar zijn voor momenteel ondersteunde versies van SQL Server voor de oplossingen van SQL Server. Voor een gedetailleerde lijst met oplossingen kunt u dit Excel-bestand downloaden.
Gebruik het oplossen van problemen met SQL Server-planning en -opbrengst voor meer ideeën.
Controleer op zware blokkerende scenario's of enorme parallellismequery's die kunnen leiden tot impasseplanners. Zie De Tao van een impasse scheduler voor gedetailleerde informatie.
Controleer voor een niet-rendementende IOCP-listener of uw systeem weinig geheugen heeft en SQL Server wordt uitgepaginad. Een andere reden is dat antivirussoftware of inbraakpreventiesoftware I/O API-aanroepen onderschept en de threadactiviteit vertraagt. Zie Voor meer informatie, is de IOCP-listener daadwerkelijk luisteren? en prestatie- en consistentieproblemen wanneer bepaalde modules of filterstuurprogramma's worden geladen.
Voor problemen met Resource Monitor hebt u mogelijk niet per se te maken met dit probleem. Zie Resource Monitor voert een niet-rendementsvoorwaarde in op een server waarop SQL Server wordt uitgevoerd voor meer informatie.
Als deze resources niet helpen, zoekt u de geheugendump die is gemaakt in de submap \LOG en opent u een ondersteuningsticket met Microsoft CSS door de geheugendump voor analyse te uploaden.
Stap 9: Zoek naar resource-intensieve Profiler- of XEvent-traceringen
Zoek naar actieve uitgebreide gebeurtenissen of SQL Server Profiler-traceringen, met name met filteren op tekstkolommen (databasenaam, aanmeldingsnaam, querytekst, enzovoort). Schakel indien mogelijk de traceringen uit en kijk of de queryprestaties verbeteren. Afhankelijk van de geselecteerde gebeurtenis kan elke thread extra CPU verbruiken, waardoor de algehele traagheid wordt veroorzaakt. Zie sys.dm_xe_sessions en voor Profiler-traceringen sys.traces om de actieve traceringen voor uitgebreide gebeurtenissen te identificeren.
SELECT * FROM sys.dm_xe_sessions
GO
SELECT * FROM sys.traces