KB974006 - SQL Server příznak trasování opravy hotfix pro optimalizátor dotazů 4199 model údržby

Platí pro
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

ÚVOD

Verze Microsoft SQL Serveru novější než SQL Server 2000 Service Pack 3 (SP3) dodávaly většinu oprav hotfix pro optimalizátor dotazů ve výchozím nastavení, aby se stávajícím produkčním zákazníkům nezobrazovaly očekávané změny plánů, které by mohly způsobit pokles výkonu. Zpočátku byla každá oprava hotfix dodávána pod samostatným příznakem trasování. Později byla tato praxe změněna tak, že většina vlajek byla sloučena pod jeden příznak (4199). Tento nový postup byl zahájen v několika verzích počínaje následujícími aktualizacemi:

  • SQL Server 2005 Service Pack 3 (SP3) kumulativní aktualizace 6
  • Balíček kumulativní aktualizace pro SQL Server 2008 Service Pack 1 (SP1) 7
  • SQL Server 2008 R2 (RTM)

Příznak 4199 se používal ke shromažďování oprav hotfix, které měly být v budoucí verzi ve výchozím nastavení zapnuté, zatímco jiné příznaky sledování se používaly pro situace, kdy oprava neměla být ve výchozím nastavení v aktuální podobě. Počínaje verzí SQL Server 2016 RTM se bude používat nastavení COMPATIBILITY_LEVEL databáze, které ve výchozím nastavení povoluje opravy hotfix související s příznakem trasování 4199. Tento článek popisuje mechanismy a zásady doručování oprav hotfix ovlivňujících plány pro SQL Server 2016 a novější verze.

Další informace

V SQL Server 2016 budou opravy hotfix s příznakem 4199, které byly provedeny v předchozích verzích SQL Server, povoleny v databázi COMPATIBILITY_LEVEL 130 bez povoleného příznaku sledování 4199. Příznak 4199 se bude používat k vydání budoucích oprav hotfix pro SQL Server 2016 pro databáze s použitím úrovně kompatibility 130. Vzhledem k tomu, že se příznak 4199 doporučuje jenom zákazníkům, kteří mají konkrétní problémy s výkonem, doporučujeme, aby zákazníci po migraci svých databází na nejnovější úroveň kompatibility odebrali příznak 4199, protože příznak 4199 se znovu použije pro budoucí opravy, které se nemusí vztahovat na vaši aplikaci a mohly by způsobit neočekávané změny výkonu plánu v produkčním systému. To znamená, že pro každou úroveň kompatibility podporovanou v dané verzi produktu jsou povoleny různé opravy hotfix stopovacího příznaku 4199. Nejnovější úroveň kompatibility už povoluje všechny předchozí opravy pod příznakem trasování 4199. To znamená, že upgrade databáze na nejnovější úroveň kompatibility a odebrání příznaku trasování 4199 stále povoluje všechny opravy, které úloha využívala před upgradem databáze, ale ne nové opravy. Pokud se později zákazníci setkají s problémy s výkonem dotazů, zkuste v testovacím prostředí povolit QUERY_OPTIMIZER_HOTFIXES možností vymezené databáze nebo ENABLE_QUERY_OPTIMIZER_HOTFIXES nápovědy dotazu a zjistěte, zda jsou problémy vyřešeny. Přečtěte si dokumentaci k QUERY_OPTIMIZER_HOTFIXES.

Poznámka Databáze vytvořené v systému SQL Server 2016 standardně používají úroveň kompatibility 130 a mají už povolenou novou logiku optimalizace.

Hlavní výhodou tohoto modelu je, že snižuje riziko pro produkční systémy během procesu upgradu. Tento přístup odděluje instalaci nové hlavní verze SQL Server od automatického povolení všech nových změn procesoru dotazů. Vzhledem k tomu, že upgrady hlavních verzí mění formát souboru a nedají se vrátit zpět, je vhodné použít nastavení COMPATIBILITY_LEVEL, protože to umožňuje zákazníkovi rychle downgradovat, pokud během upgradu zjistí neočekávaný problém s výkonem plánu. Pokud zákazník zjistí neočekávanou změnu plánu, která blokuje upgrade aplikace, může situaci zmírnit použitím vhodné nápovědy k plánu pomocí úložiště dotazů k vynucení předchozího plánu, nebo může situaci zmírnit kontaktováním zákaznické podpory společnosti Microsoft, která mu pomůže problém vyřešit a poskytnout alternativní řešení nebo opravu hotfix. Po zmírnění všech problémů může upgrade pokračovat. Zákazníci by měli tuto funkci integrovat do plánování upgradu na SQL Server 2016.

Následující tabulka vysvětluje model, jak bude fungovat příznak trasování 4199 počínaje verzí SQL Server 2016.

Nastavení Úroveň kompatibility SQL Příznak 4199 Opravy hotfix pro optimalizaci před verzí pro SQL Server 2016 RTM Opravy hotfix pro optimalizaci po verzi verze SQL Server 2016 RTM
1. 120 Vypnuto Disabled Disabled
2. 120 Zapnuto Povoleno Disabled
3. 130 Vypnuto Povoleno podle úrovně kompatibility Disabled
4. 130 Zapnuto Povoleno podle úrovně kompatibility Povoleno podle úrovně kompatibility

Poznámka: Nastavení č. 3 se doporučuje zákazníkům, kteří nově upgradují na SQL Server 2016.

U hlavních verzí po verzi SQL Server 2016 plánuje Microsoft dál používat tento model údržby pro opravy hotfix optimalizátoru. Ve výchozím nastavení nebo v každé verzi budou všechny opravy hotfix s příznakem trasování 4199 z předchozí verze povoleny na další úrovni kompatibility. To znamená, že pro zákazníky po migraci na nejnovější úroveň kompatibility se doporučuje mít zakázaný příznak trasování 4199. Pozdější opravy hotfix používaly příznak trasování 4199 k povolení oprav pro zákazníky, kteří musí tyto konkrétní opravy hotfix v aplikaci povolit. Zákazníkům se doporučuje, aby po upgradu aplikace na nejnovější úroveň kompatibility deaktivovali příznak trasování 4199, aby se předešlo neočekávaným budoucím změnám optimalizátoru v aplikaci. Že upgrade na nejnovější úroveň kompatibility a odebrání příznaku trasování 4199 stále umožňuje všechny opravy, které úloha využívala před upgradem, jen ne nové opravy.

Poznámka I když je mnoho oprav hotfix pro optimalizaci povoleno pod příznakem trasování 4199, některé používají jiné příznaky trasování. Trace flag 4199 historicky pokryté příznaky trasování, které jsou široce použitelné a pravděpodobně budou v budoucí verzi ve výchozím nastavení povoleny. Alternativní příznaky trasování se používají v opravách hotfix, kde jsou podmínky velmi specifické pouze pro několik zákazníků, kde oprava může způsobit pokles výkonu v jiných typech aplikací nebo kde interní funkce mohou zaznamenat změny dříve, než je připravena k povolení pro všechny. Společnost Microsoft bude dál používat jiné příznaky sledování podle potřeby pro servis produktu.

Poznámka Tento článek se zaměřuje na model pro vydávání oprav hotfix s příznakem trasování 4199 na nejnovější úrovni kompatibility nejnovějšího produktu. (V době publikování je to SQL Server 2016.) Opravy hotfix pro optimalizaci můžou být vydané ve starších verzích SQL Serveru (na trhu) nebo na nižších úrovních kompatibility (120 nebo starších) SQL Serveru 2016. Microsoft každý případ vyhodnotí a rozhodne, jestli použít příznak trasování 4199 nebo jiný příznak trasování. Vzhledem k tomu, že změny, které nejsou opravami hotfix, jsou povoleny i při přechodu na novější úroveň kompatibility, neexistuje žádný konkrétní příslib, že během upgradu (s příznakem sledování 4199 nebo bez něj) nedojde k žádným změnám plánu. Zákazníci by měli vždy pečlivě otestovat změny úrovně kompatibility pro produkční aplikace a měli by použít technologie pro zmírnění rizik, jako je například úložiště dotazů, pokud dojde k problému s výkonem souvisejícím s volbou plánu.

Pro referenci byly následující příznaky trasování použity pro opravy hotfix procesoru dotazů před zavedením příznaku trasování 4199:

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 a novější verze

Příznak sledování 4199 je součástí vydávaných verzí SQL Server 2012 a novějších verzí.

Povolení příznaku trasování 4199

Příznak trasování 4199 můžete povolit při spuštění nebo v uživatelské relaci. Tento příznak sledování má účinek na globální úrovni nebo na úrovni relace. Chcete-li povolit příznak trasování 4199, použijte příkaz DBCC TRACEON nebo použijte –T 4199 jako spouštěcí parametr.

Pokud se použije DBCC TRACEON\TRACEOFF, nedojde k opětovnému vygenerování nového plánu uloženého v mezipaměti pro uložené procedury. Plány můžou být v mezipaměti, které byly vytvořeny bez příznaku trasování.

Podrobné informace o tom, jak povolit nebo zakázat příznaky trasování a vysvětlení globálních příznaků a příznaků trasování na úrovni relace, najdete v následujících tématech na webu SQL Server Books Online:

Reference

Další informace o schématu pojmenování aktualizací pro aktualizace serveru SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

822499
Nové schéma pojmenování balíčků aktualizací softwaru Microsoft SQL Server
Další informace o terminologii aktualizací softwaru naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

824684
Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft