ВЪВЕДЕНИЕ
Версиите на Microsoft SQL Server по-късно от SQL Server 2000 Service Pack 3 (SP3) доставиха повечето актуални корекции на оптимизатора на заявки в състояние "изключено по подразбиране", за да предотвратите на съществуващите производствени клиенти да виждат очакваните промени в плана, които могат да доведат до регресии на производителността. Отначало всяка актуална корекция е доставена под отделен флаг за проследяване. По-късно тази практика е променена, така че повечето флагове да са комбинирани под един флаг за проследяване (4199). Тази нова практика е инициирана в множество версии, започвайки със следните актуализации:
-
SQL Server 2005 Service Pack 3 (SP3) кумулативна актуализация 6
-
SQL Server 2008 Service Pack 1 (SP1) кумулативен пакет за актуализация 7
-
SQL Server 2008 R2 (RTM)
Флаг за проследяване 4199 е използван за събиране на актуални корекции, които са предназначени да станат по подразбиране в бъдещо издание, докато други флагове за проследяване са използвани за ситуации, в които корекцията не е предназначена да стане по подразбиране в текущия формуляр. Започвайки от SQL Server 2016 RTM, настройката за COMPATIBILITY_LEVEL базата данни ще се използва за разрешаване на корекции, свързани с флаг за проследяване 4199, по подразбиране. В тази статия е описан механиката и правилата за начина, по който ще бъдат доставяни актуални корекции, засягащи плана, за SQL Server 2016 г. и по-нови версии.
Повече информация
В SQL Server 2016 г. флаг за проследяване 4199 актуални корекции, които са направени в предишни издания на SQL Server, ще станат разрешени под база данни COMPATIBILITY_LEVEL 130 без флаг за проследяване 4199 разрешено. Флаг за проследяване 4199 ще се използва за издаване на всички бъдещи SQL Server корекции за 2016 г. за бази данни с помощта на нивото на съвместимост 130. Тъй като флаг за проследяване 4199 се препоръчва само за клиенти, които виждат конкретни проблеми с производителността, на клиентите се препоръчва да премахват флаг за проследяване 4199, след като мигрират своите бази данни към най-новото ниво на съвместимост, тъй като флагът за проследяване 4199 ще се използва повторно за бъдещи корекции, които може да не се отнасят за вашето приложение, и може да доведат до неочаквани промени в производителността на плана в производствена система. Това означава, че различни корекции с флаг за проследяване 4199 са разрешени за всяко ниво на съвместимост, което се поддържа в дадено издание на продукта. Най-новото ниво на съвместимост вече разрешава всички предишни корекции под флаг за проследяване 4199. Това означава, че надстройването на база данни до най-новото ниво на съвместимост и премахването на флаг за проследяване 4199 все още разрешава всички корекции, които е използвало работното натоварване преди надстройката на базата данни, но не и новите корекции. Ако в по-късен момент клиентите имат проблеми с производителността на заявките, експериментирайте с разрешаването на опцията с обхват на базата данни QUERY_OPTIMIZER_HOTFIXES или подсказване на заявка ENABLE_QUERY_OPTIMIZER_HOTFIXES в тестова среда, за да определите дали проблемите са решени. Вижте документацията за QUERY_OPTIMIZER_HOTFIXES.
Забележка По подразбиране базите данни, които са създадени в SQL Server 2016, използват ниво на съвместимост 130 и вече имат разрешена нова логика на оптимизатора.
Голямото предимство на този модел е, че намалява риска за производствените системи по време на процеса на надстройка. Този подход отделя инсталирането на нова основна версия на SQL Server автоматичното разрешаване на всички нови промени в процесора на заявки. Тъй като основните надстройки на версиите променят файловия формат и не са обратими, добра идея е да използвате настройката COMPATIBILITY_LEVEL, тъй като това позволява на клиента бързо да се понижи, ако бъде намерен неочакван проблем с производителността на плана по време на надстройка. Ако клиентът открие неочаквана промяна в плана, която блокира надстройката на приложение, клиентът може да облекчи ситуацията, като приложи подходяща подсещане за плана, като използва хранилището за заявки, за да накара предварителния план, или може да улесни ситуацията, като се свърже с отдела за поддръжка на клиенти на Microsoft, за да ви помогне да предоставите заобиколно решение или актуална корекция. Когато всички проблеми са снишени, надстройката може да продължи. Клиентите трябва да интегрират тази възможност в планирането на надстройката за SQL Server 2016 г. Следващата таблица обяснява модела как ще работи флагът за проследяване 4199, започвайки с SQL Server 2016.
Настройка |
SQL на съвместимост |
Флаг за проследяване 4199 |
Оптимизатор на актуални корекции преди SQL Server 2016 RTM |
Оптимизатор на спешни корекции след SQL Server 2016 RTM |
---|---|---|---|---|
1. |
120 |
Изкл. |
Забранено |
Забранено |
2. |
120 |
На |
Разрешено |
Забранено |
3. |
130 |
Изкл. |
Разрешено от ниво на съвместимост |
Забранено |
4. |
130 |
На |
Разрешено от ниво на съвместимост |
Разрешено от ниво на съвместимост |
Забележка Задаване не. 3 се препоръчва за клиенти, които наскоро надстройят до SQL Server 2016.
За основни издания след SQL Server 2016 г. Microsoft планира да продължи да използва този модел на обслужване за оптимизаторски актуални корекции. По подразбиране или всяко издание всички корекции с флаг за проследяване 4199 от предишното издание ще бъдат разрешени на следващото ниво на съвместимост. Това означава, че препоръчителната държава за клиентите, след като мигрират към най-новото ниво на съвместимост, ще бъде да има забранен флаг за проследяване 4199. По-късните актуални корекции ще използват флаг за проследяване 4199, за да позволят корекции за клиенти, които трябва да активират тези конкретни актуални корекции в приложение. Препоръчително е клиентите да забранят флага за проследяване 4199, след като приложението бъде надстроено до най-новото ниво на съвместимост, за да се избегне неочакваното активиране на неочаквани бъдещи промени на оптимизатора в приложение. Надстройването до най-новото ниво на съвместимост и премахването на флага за проследяване 4199 все още позволява всички корекции, които е използвало работното натоварване преди надстройката, но не и новите корекции.Забележка Въпреки че много актуални корекции за оптимизатора са разрешени под флаг за проследяване 4199, някои използват други флагове за проследяване. Флаг за проследяване 4199, които исторически са покрити с флагове за проследяване, които са широко приложими и има вероятност да станат разрешени по подразбиране в бъдещо издание. В спешните корекции се използват алтернативни флагове за проследяване, където условията са много специфични само за няколко клиенти, където корекцията може да доведе до регресии на производителността в други видове приложения или когато вътрешната функционалност може да види промени, преди да е готова да стане разрешена за всички. Microsoft ще продължи да използва други флагове за проследяване, ако е необходимо, за да обслужва продукта.
Забележка Тази статия се фокусира върху модела за освобождаване на флаг за проследяване 4199 актуални корекции на най-новото ниво на съвместимост на най-новия продукт. (В момента на публикуване това е SQL Server 2016 г.) Актуалните корекции за оптимизатора може да бъдат издадени на по-стари пазарни версии на SQL Server или на по-ниски нива на съвместимост (120 или преди) на SQL Server 2016. Microsoft ще оцени всеки случай и ще определи дали да използва флаг за проследяване 4199, или друг флаг за проследяване. Тъй като промените, които не са актуални, също са разрешени, когато се извърши преместване на по-късно ниво на съвместимост, няма конкретно обещание, че по време на надстройката няма да възникнат промени в плана (със или без флаг за проследяване 4199). Клиентите винаги трябва да тестват внимателно промените в нивото на съвместимост за производствените приложения и трябва да използват технологии за смекчаване, като например хранилището за заявки, ако има проблем с производителността, свързан с избор на план. За справка следните флагове за проследяване са използвани за актуални корекции на процесора на заявки преди въвеждането на флаг за проследяване 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 г. и по-нови версии
Флагът за проследяване 4199 е включен в изданията на SQL Server 2012 и по-нови версии.
Как да разрешите флаг за проследяване 4199
Можете да разрешите флаг за проследяване 4199 при стартиране или в потребителска сесия. Този флаг за проследяване има ефект на глобално ниво или на ниво сесия. За да разрешите флаг за проследяване 4199, използвайте командата DBCC TRACEON или използвайте –T 4199 като параметър за стартиране.
Ако се използва DBCC TRACEON\TRACEOFF, това не възстановява нов кеширан план за съхранени процедури. Плановете може да са в кеша, които са създадени без флага за проследяване. За подробна информация как да разрешите или забраните флаговете за проследяване и за обяснения на флаговете за проследяване на глобално ниво и на ниво сесия вижте следните теми в SQL Server Books Online:Препратки
За повече информация относно схемата за именуване SQL Server актуализации щракнете върху следния номер на статия в базата знания на Microsoft:
822499 Нова схема за именуване за Microsoft SQL Server на софтуерни актуализации За повече информация относно терминологията за актуализиране на софтуер щракнете върху следния номер на статия в базата знания на Microsoft:
824684 Описание на стандартната терминология, която се използва за описание на софтуерните актуализации на Microsoft