FIX: Verminderde prestaties bij gebruik van de tabelvariabelen in SQL Server 2012 of in SQL Server 2014

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 2952444
Symptomen
Wanneer u een variabele van een tabel met veel rijen te vullen en vervolgens lid maken met andere tabellen, kan de query optimizer een inefficiënt queryplan, wat leiden kan tot trage prestaties van query's kiezen.
Oplossing
Nadat u deze hotfix hebt toegepast, kunt u op traceringsvlag 2453 waarmee een tabelvariabele recompile activeren wanneer een voldoende aantal rijen zijn gewijzigd. Hierdoor kan de query optimizer een efficiëntere plan te kiezen.

In eerste instantie het probleem is opgelost in de volgende cumulatieve update of / en Service Packs voor SQL Server.

Cumulatieve Update 3 voor SQL Server 2014

Over cumulatieve updates voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingscorrecties die zijn opgenomen in de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Servicepack 2 voor SQL Server 2012

Over servicepacks voor SQL Server

Servicepacks zijn cumulatief van opzet. Elk nieuw servicepack bevat alle correcties uit voorgaande servicepacks, naast nieuwe foutcorrecties. Onze aanbeveling is het meest recente servicepack en de meest recente cumulatieve update voor dat servicepack toe te passen. U hoeft niet een eerdere servicepacks te installeren voordat u het meest recente servicepack installeert. Tabel 1 in het volgende artikel voor meer informatie over de meest recente servicepack en de meest recente cumulatieve update gebruiken:

Meer informatie
Wanneer u een tabelvariabele in een batch- of procedure, wordt de query samengesteld en geoptimaliseerd voor de lege beginstatus van tabelvariabele. Als deze tabelvariabele wordt gevuld met veel rijen tijdens runtime, langer het queryplan vooraf gecompileerde niet optimaal. Bijvoorbeeld de query bevat joins tussen de variabele van een tabel met de geneste lus omdat het meestal handiger voor klein aantal rijen. Deze queryplan is inefficiënt als de tabelvariabele miljoenen rijen heeft. Een hash-join is misschien een betere keuze onder deze voorwaarde. Als u een nieuw queryplan gemaakt, moet deze opnieuw worden gecompileerd. In tegenstelling tot de andere gebruiker of tijdelijke tabellen echter wordt rij aantal wijzigen in een tabelvariabele niet geactiveerd een query opnieuw compileren. Gewoonlijk, u kunt dit omzeilen met OPTION (RECOMPILE), die zijn eigen overheadkosten heeft.
Het voordeel van de query opnieuw compileren zonder OPTION (RECOMPILE) kunt u de traceringsvlag 2453. Deze traceringsvlag verschilt van OPTION (RECOMPILE) in twee belangrijke aspecten.
(1) wordt de drempelwaarde voor aantal van dezelfde rij als andere tabellen. De query hoeft niet te worden opgesteld voor elke uitvoering in tegenstelling tot OPTION (RECOMPILE). Alleen wanneer de wijziging rij count groter is dan de vooraf gedefinieerde drempel, zou deze recompile geactiveerd.
(2) optie (RECOMPILE) zorgt ervoor dat de query parameters peek en optimaliseren van de query voor hen. Deze traceringsvlag hoeft niet inzien dat parameter.

Opmerking deze traceringsvlag moeten op tijdens runtime. U kunt deze traceringsvlag niet gebruiken met QUERYTRACEON. Deze traceringsvlag moet voorzichtig zijn omdat het aantal compilaties van query die meer dan besparingen van betere queryoptimalisatie kosten kan kunt verhogen.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 2952444 - Laatst bijgewerkt: 02/22/2016 07:03:00 - Revisie: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtnl
Feedback