Introduktion

Versioner av Microsoft SQL Server senare än SQL Server 2000 Service Pack 3 (SP3) levererade de flesta snabbkorrigeringar till frågeoptimeraren i läget off-by-default för att förhindra att befintliga produktionskunder ser förväntade planändringar som kan orsaka prestanda regressioner. Till en början levererades varje snabbkorrigering under en separat spårningsflagga. Senare har den här övningen ändrats så att de flesta flaggor kombineras under en enda spårningsflagga (4199). Den här nya övningen initierades i flera versioner med början i följande uppdateringar:

  • SQL Server 2005 Service Pack 3 (SP3) kumulativ uppdatering 6

  • SQL Server 2008 Service Pack 1 (SP1) Kumulativ uppdateringspaket 7

  • SQL Server 2008 R2 (RTM)

Spåra flagga 4199 användes för att samla in snabbkorrigeringar som var avsedda att bli på-som-standard i en framtida version, medan andra spårningsflaggor användes för situationer där en korrigering inte var avsedd att användas som standard i det aktuella formuläret. Från och med SQL Server 2016 RTM används databasens COMPATIBILITY_LEVEL-inställning för att aktivera spårningsflaggan 4199-relaterade snabbkorrigeringar som standard. I den här artikeln beskrivs hållfastheten och principen för hur plan som påverkar snabbkorrigeringar levereras för SQL Server 2016 och senare versioner.

Mer information

I SQL Server 2016 aktiveras spårningsflaggan 4199-snabbkorrigeringar som görs i tidigare versioner av SQL Server under databas COMPATIBILITY_LEVEL 130 utan att spårningsflaggan 4199 är aktiverad. Trace flag 4199 används för att släppa eventuella kommande snabbkorrigeringar för SQL Server 2016 för databaser med hjälp av kompatibilitetsnivån 130. Eftersom Spårningsflagga 4199 endast rekommenderas för kunder som har specifika prestandaproblem bör kunderna ta bort spårningsflaggan 4199 efter att de har migrerat sina databaser till den senaste kompatibilitetsnivån eftersom spårningsflaggan 4199 återanvänds för framtida korrigeringar som kanske inte gäller för programmet och kan orsaka oväntade prestandaändringar i ett produktionssystem. Det innebär att olika spårningsflaggan 4199-snabbkorrigeringar aktiveras för varje kompatibilitetsnivå som stöds i en viss produktlansering. Den senaste kompatibilitetsnivån aktiverar redan alla tidigare korrigeringar under spårningsflaggan 4199. Det innebär att om du uppgraderar en databas till den senaste kompatibilitetsnivån och att borttagning av spårningsflagga 4199 fortfarande möjliggör alla korrigeringar som en arbetsbelastning utnyttjar före databasuppgradering, men inte nya korrigeringar. Om kunder senare får problem med frågeprestanda kan du experimentera med att aktivera det databasomfattningsalternativ som finns QUERY_OPTIMIZER_HOTFIXES eller frågetipset ENABLE_QUERY_OPTIMIZER_HOTFIXES i en testmiljö för att avgöra om problemen är lösta. Se dokumentationen om QUERY_OPTIMIZER_HOTFIXES

Obs! Som standard använder databaser som skapas i SQL Server 2016 kompatibilitetsnivå 130 och har ny optimeringslogik redan aktiverad.

Den stora fördelen med den här modellen är att den minskar risken för produktionssystem under uppgraderingen. Den här metoden skiljer installationen av en ny huvudversion av SQL Server från automatisk aktivering av alla nya ändringar i frågeprocessorn. Eftersom större versionsuppgraderingar ändrar filformatet och inte kan ångras är det en bra idé att använda COMPATIBILITY_LEVEL-inställningen, eftersom det gör att en kund snabbt kan nedgradera om ett oväntat prestandaproblem hittas vid en uppgradering. Om en kund hittar en oväntad planändring som blockerar en programuppgradering kan kunden underlätta situationen genom att använda en lämplig plantips med hjälp av Query Store för att tvinga fram den föregående planen, eller som kan underlätta situationen genom att kontakta Microsofts kundsupport för att få hjälp med problemet för att hitta en lösning eller snabbkorrigering. När alla problem har minskats kan uppgraderingen fortsätta. Kunderna bör integrera den här funktionen i sin uppgraderingsplanering för SQL Server 2016.

I följande tabell beskrivs modellen för hur spårningsflagga 4199 fungerar med början SQL Server 2016.

Inställning

SQL kompatibilitetsnivå

Spåra flagga 4199

Snabbkorrigeringar för Optimizer före SQL Server 2016 RTM

Snabbkorrigeringar för Optimizer efter SQL Server 2016 RTM

1.

120

Av

Inaktiverad

Inaktiverad

2.

120

Aktiverad

Inaktiverad

3.

130

Av

Aktiverad av kompatibilitetsnivå

Inaktiverad

4.

130

Aktiverad av kompatibilitetsnivå

Aktiverad av kompatibilitetsnivå

Obs! Inställning nr 3 rekommenderas för kunder som nyligen uppgraderar till SQL Server 2016.

För större versioner efter SQL Server 2016 planerar Microsoft att fortsätta använda den här servicemodellen för optimeringskorrigeringar. Som standard aktiveras alla snabbkorrigeringar från den tidigare versionen av en spårningsflagga 4199 under nästa kompatibilitetsnivå. Det innebär att det rekommenderade tillståndet för kunder när de har migrerat till den senaste kompatibilitetsnivån är att spåra flagga 4199 är inaktiverad. Senare snabbkorrigeringar använder spårningsflagga 4199 för att aktivera korrigeringar för kunder som måste aktivera dessa specifika snabbkorrigeringar i ett program. Kunder bör inaktivera spårningsflagga 4199 när ett program har uppgraderats till den senaste kompatibilitetsnivån för att undvika att oväntade framtida optimeringsändringar aktiveras i ett program oväntat. När du uppgraderar till den senaste kompatibilitetsnivån och tar bort Spåra flagga 4199, möjliggörs fortfarande alla korrigeringar som en arbetsbelastning utnyttjar före uppgraderingen, men inte nya korrigeringar.

Obs! Många optimeringskorrigeringar aktiveras under spårningsflagga 4199, men vissa använder andra spårningsflaggor. Trace flag 4199 historically covered trace flags that are widely applicable and likely to become enabled by default in a future release. Alternativa spårningsflaggor används i snabbkorrigeringar där villkoren är mycket specifika för bara ett fåtal kunder, där korrigeringen kan orsaka prestanda regressioner i andra typer av program eller där de interna funktionerna kan se ändringar innan den är redo att aktiveras för alla. Microsoft fortsätter använda andra spårningsflaggor efter behov för att använda produkten.

Obs! Den här artikeln fokuserar på modellen där du släpper snabbkorrigeringar av Trace Flag 4199 på den senaste kompatibilitetsnivån för den senaste produkten. (Vid publiceringen är det SQL Server 2016.) Snabbkorrigeringar för Optimizer kan släppas på äldre versioner av SQL Server eller på lägre kompatibilitetsnivåer (120 eller tidigare) av SQL Server 2016. Microsoft utvärderar varje ärende och avgör om du ska använda spårningsflaggan 4199 eller en annan spårningsflagga. Eftersom ändringar som inte är snabbkorrigeringar också aktiveras när en flyttning görs till en senare kompatibilitetsnivå, finns det inget särskilt avtal att inga ändringar av planen kommer att ske under en uppgradering (med eller utan spårningsflagga 4199). Kunderna bör alltid testa ändringar av kompatibilitetsnivån noggrant för produktionsprogram och bör använda minskningsteknik, till exempel Frågearkiv, om det finns ett prestandaproblem som rör planval.

Som referens har följande spårningsflaggor använts för frågeprocessor-snabbkorrigeringar innan spårningsflagga 4199 introducerades:

4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.

SQL Server 2012 och senare versioner

Spåra flagga 4199 ingår i versionerna av Spårning SQL Server 2012 och senare versioner.

Så här aktiverar du spårning av flagga 4199

Du kan aktivera spåra flagga 4199 vid start eller i en användarsession. Den här spårningsflaggan har antingen global nivå eller sessionsnivåeffekt. Om du vill aktivera spårningsflagga 4199 använder du kommandot DBCC TRACEON eller använder -T 4199 som startparameter.

Om DBCC TRACEON\TRACEOFF används återskapas inte en ny cachelagrad plan för lagrade procedurer. Planer kan finnas i cacheminnet som skapades utan spårningsflaggan.

Detaljerad information om hur du aktiverar eller inaktiverar spårningsflaggor och förklaringar av globala flaggor och spårningsflaggor på sessionsnivå finns i följande avsnitt i SQL Server Books Online:

Referenser

Om du vill ha mer information om namngivningsschemat för SQL Server uppdateringar klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

822499
Nytt namngivningsschema för Microsoft SQL Server programuppdateringspaket
Om du vill ha mer information om terminologi för programuppdateringar klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

824684
Beskrivning av standardterminologin som används för att beskriva programvaruuppdateringar för Microsoft

Behöver du mer hjälp?

Utöka dina kunskaper

UTFORSKA UTBILDNING >

Få nya funktioner först

ANSLUT TILL MICROSOFT INSIDERS >

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?

Tack för din feedback!

×