Резюме
Тази актуализация въвежда нов аргумент за подсказване на заявка – 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 да генерира план, който не използва модификации на целите на редовете със заявки, които съдържат следните ключови думи:
|
|
| 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 използва за описване на актуализациите на софтуера.