KB3189813 - Актуализацията въвежда аргумента USE HINT заявка "подсказване" в SQL Server 2016

Отнася се за
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

Резюме

Тази актуализация въвежда нов аргумент за подсказване на заявка – USE HINT, който ви позволява да управлявате оптимизатора на заявките без повишени идентификационни данни или без да сте член на ролята на sysadmin сървър. Синтаксисът на тази нова заявка за подсказване прилича на следния:

<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}

      

Тази актуализация въвежда и следните опции за подсказване, които могат да се използват с аргумента USE HINT.

Опция Еквивалентен флаг за проследяване Описание Важи за
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS TF 9476 Кара SQL Server да генерира план за заявка, като използва допускането за простото ограничаване вместо предположението по подразбиране за базово ограничаване за съединения, под модела за оценка на производителността на оптимизатора на заявките на SQL Server 2014 или по-нова версия.
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES TF 4137 Кара SQL Server да генерира план, използвайки минимална селективност при оценката на AND предикати за филтри, за да се отчете корелацията. Това име на подсказване е успоредно на флаг за проследяване 4137, когато се използва с модела за оценка на брой обекти на SQL Server 2012 (11.x) и по-ранни версии, и има подобен ефект, когато флаг за проследяване 9471 се използва с модела за оценка на брой обекти на SQL Server 2014 (12.x) или по-нова версия.
DISABLE_BATCH_MODE_ADAPTIVE_JOINS Забранява адаптивните съединения в пакетен режим. от SQL Server 2017
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK Забранява обратната връзка за предоставяне на памет за пакетен режим. от SQL Server 2017
DISABLE_DEFERRED_COMPILATION_TV Забранява отложеното компилиране на променливи на таблица. Започване от SQL Server 2019
DISABLE_INTERLEAVED_EXECUTION_TVF Забранява редуващото се изпълнение за многооператорни функции с таблични стойности. от SQL Server 2017
DISABLE_OPTIMIZED_NESTED_LOOP TF 2340 Инструктира процесора на заявки да не използва операция за сортиране (пакетно сортиране) за оптимизирани вложени циклични съединения, когато генерира план за заявка.
DISABLE_OPTIMIZER_ROWGOAL TF 4138 Кара SQL Server да генерира план, който не използва модификации на целите на редовете със заявки, които съдържат следните ключови думи:

  • TOP
  • OPTION (FAST N)
  • IN
  • EXISTS
DISABLE_PARAMETER_SNIFFING TF 4136 Инструктира оптимизатора на заявките да използва разпределението на средната стойност на данните при компилиране на заявка с един или повече параметри. Тази инструкция прави плана на заявката независим от стойността на параметъра, която е била използвана за първи път при съставянето на заявката. Използвайте този съвет, за да заместите настройката за конфигурация на обхвата на база данни PARAMETER_SNIFFING=ИЗКЛ.
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK Забранява обратна връзка за предоставяне на памет за режим на редове. Започване от SQL Server 2019
DISABLE_TSQL_SCALAR_UDF_INLINING Забранява вграденото на скаларен UDF файл. Започване от SQL Server 2019
DISALLOW_BATCH_MODE Забранява изпълнението на пакетния режим. Започване от SQL Server 2019
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS TF 4139 Позволява автоматично генерирана бърза статистика (изменение на хистограма) за всяка колона с водещ индекс, за която е необходима оценка на брой обекти. Хистограмата, използвана за оценка на брой обекти, ще се коригира по време на съставяне на заявката, за да се отчете действителната максимална или минимална стойност на тази колона.
ENABLE_QUERY_OPTIMIZER_HOTFIXES TF 4199 Разрешава горещи корекции на оптимизатора на заявките (промени, издадени в сборните актуализации и сервизни пакети на SQL Server). Използвайте този съвет, за да игнорирате настройката за конфигурация на обхвата на база данни QUERY_OPTIMIZER_HOTFIXES=ON.
FORCE_DEFAULT_CARDINALITY_ESTIMATION TF 9481 Принуждава оптимизатора на заявките да използва модел за оценка на брой обекти, който отговаря на текущото ниво на съвместимост на базата данни. Използвайте това подсказване, за да заместите настройката за конфигурация на обхвата на базата данни LEGACY_CARDINALITY_ESTIMATION=ON.
FORCE_LEGACY_CARDINALITY_ESTIMATION TF 9481 Принуждава оптимизатора на заявките да използва модела за оценка на количеството на SQL Server 2012 (11.x) и по-стари версии. Използвайте това подсказване, за да заместите настройката за конфигурация на обхвата на базата данни LEGACY_CARDINALITY_ESTIMATION=ON.
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n Налага поведението на оптимизатора на заявките на ниво заявка. Това поведение се случва, сякаш заявката е компилирана с ниво n, където n е поддържано ниво на съвместимост на базата данни. Вижте sys.dm_exec_valid_use_hints за списък с поддържаните в момента стойности за n. Започвайки от SQL Server 2017 (14.x) CU10

За повече информация вижте "Съвети (Transact-SQL) – Заявка".

Повече информация

Тази актуализация е включена в Service Pack 1 за SQL Server 2016.

За компилациите на SQL Server 2016

Всяка нова компилация за SQL Server 2016 съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за SQL Server 2016.

Сценариите, в които поведението на оптимизатора на заявките (QO) на SQL Server трябва да бъде подсказано, са доста чести и традиционно те се разглеждат с помощта на няколко (документирани и недокументирани) флага за проследяване. Но когато флаговете за проследяване са зададени глобално, те може да имат неблагоприятен ефект върху други работни натоварвания. Освен това разрешаването им за всяка сесия не е практично при съществуващите приложения, а разрешаването им за всяка заявка с OPTION QUERYTRACEON изисква членство в ролята на системен администратор на фиксиран сървър. (Въпреки че можете да заобиколите това поведение с помощта на ръководство за план или съхранена процедура, все още се изискват идентификационни данни с повишени права.)

Флаговете за проследяване се използват за временно задаване на определени характеристики на сървъра или за изключване на определено поведение. Те може да са трудни за управление и разбиране.

За информация относно флаговете за проследяване вижте темата "Флагове за проследяване" (Transact-SQL) на уеб сайта на Microsoft Developer Network (MSDN).

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.