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 |
PĂ„ |
Aktiverad |
Inaktiverad |
3. |
130 |
Av |
Aktiverad av kompatibilitetsnivÄ |
Inaktiverad |
4. |
130 |
PĂ„ |
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