Training
Leertraject
Queryprestaties optimaliseren in Azure SQL - Training
Queryprestaties optimaliseren in Azure SQL
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Dit artikel helpt u bij het oplossen van het probleem waarbij hoog CPU-gebruik optreedt wanneer u query's uitvoert in SQL Server.
Van toepassing op: SQL Server
Oorspronkelijk KB-nummer: 2009160
Wanneer u Werkt met Microsoft SQL Server met een zeer gelijktijdige workload, merkt u mogelijk prestatieproblemen in query's. Dit gedrag kan optreden als gemiddeld tot hoog CPU-gebruik of extreme aanvragen voor geheugentoe kennen.
U kunt ook andere bijwerkingen ervaren, zoals OOM-omstandigheden, geheugendruk voor verwijdering van plancache of onverwachte RESOURCE_SEMAPHORE
wachttijden.
Bovendien ziet u mogelijk dat queryplannen voor query's die veel CPU of geheugen verbruiken, het kenmerk OPTIMIZED hebben voor een operator voor het samenvoegen van geneste lussen op Waar.
Dit probleem kan optreden in sommige gevallen waarbij sql Server-queryprocessor een optionele sorteerbewerking introduceert om de prestaties te verbeteren. Deze bewerking staat bekend als een 'Geoptimaliseerde geneste lus' of 'Batch-sortering' en de queryoptimalisatie bepaalt wanneer u deze operators het beste kunt introduceren. In zeldzame gevallen raakt de query slechts een paar rijen aan, maar de installatiekosten voor de sorteerbewerking zijn zo belangrijk dat de kosten van de geoptimaliseerde geneste lus opwegen tegen de voordelen ervan. Daarom kunt u in die gevallen tragere prestaties observeren in vergelijking met wat er wordt verwacht.
Gebruik traceringsvlag 2340 om de optimalisatie uit te schakelen om het probleem op te lossen. Traceringsvlag 2340 geeft de queryprocessor de opdracht om geen sorteerbewerking (batchsorteerd) te gebruiken voor geoptimaliseerde geneste luskoppelingen bij het genereren van een queryplan. Dit is van invloed op het hele exemplaar.
Voordat u deze traceringsvlag inschakelt, kunt u uw toepassingen grondig testen om ervoor te zorgen dat u de verwachte prestatievoordelen krijgt wanneer u deze optimalisatie uitschakelt. Dit komt doordat de sorteeroptimalisatie handig kan zijn wanneer er een grote toename is in het aantal rijen dat wordt aangeraakt door het plan.
Zie DBCC TRACEON - Trace Flags (Transact-SQL) voor meer informatie.
U kunt ook de volgende DISABLE_OPTIMIZED_NESTED_LOOP
queryhint toepassen om de optimalisatie op queryniveau uit te schakelen.
SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (USE HINT (DISABLE_OPTIMIZED_NESTED_LOOP));
Zie DISABLE_OPTIMIZED_NESTED_LOOP voor meer informatie.
Opstartopties voor database-engineservice
Training
Leertraject
Queryprestaties optimaliseren in Azure SQL - Training
Queryprestaties optimaliseren in Azure SQL
Documentatie
Problemen met een query oplossen met verschillende prestaties tussen twee servers - SQL Server
Biedt stappen voor probleemoplossing voor een probleem waarbij een query aanzienlijk verschillende prestaties op twee servers weergeeft.
Problemen met hoog CPU-gebruik in SQL Server oplossen - SQL Server
Dit artikel bevat een procedure waarmee u problemen met hoog CPU-gebruik kunt oplossen op een server waarop SQL Server wordt uitgevoerd.
Problemen met trage query's oplossen vanwege time-out van queryoptimalisatie - SQL Server
Introduceert hoe Time-out van Optimizer invloed kan hebben op queryprestaties en hoe u de prestaties optimaliseert.