Включить влияющих на план SQL Server запроса оптимизатор поведение, которое может управляться флаги трассировки различных на уровне конкретных запросов

Применимо к: Microsoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Standard Edition

Введение


Начиная с Microsoft SQL Server 2000 Пакет обновления 3 (SP3) для SQL Server, командный процессор запросов применяет политику, какие-либо исправления, которые потенциально могут повлиять на выполнение плана запроса должна контролироваться флага трассировки. За исключением исправления ошибок, которые могут привести к неверным результатам или повреждения по умолчанию отключены следующие исправления и флага трассировки необходимо включить исправление. Эта политика позволяет избежать непредвиденных изменений в планы выполнения существующих рабочих нагрузок, которые могут возникнуть при установке исправления или обновления безопасности. Обычно при запуске или во время сеанса пользователя, включены флаги трассировки. Тем не менее это может иметь непредвиденные влияет на некоторые запросы в существующее приложение базы данных. Например, рассмотрим приложение или рабочей нагрузки, которая включает в себя несколько запросов и некоторые из этих запросов используйте неэффективного выполнения плана запроса, повышается за счет включения флага трассировки, который управляет соответствующего исправления. Однако другие запросы могут возникнуть менее оптимального плана выполнения при применении же флаг трассировки. Это происходит потому, что влияет на выбор плана выполнения всех запросов, которые компилируются в экземпляре или сеанса, когда соответствующий флаг трассировки включен. В зависимости от запроса и данных изменение моделей, которые используются оптимизатором запросов может улучшить и ускорить выполнение плана эффективность и компиляции для конкретных запросов. Если флаг трассировки нежелательным образом влияет на любой план выполнения запроса, но улучшает некоторые план выполнения запроса, может потребоваться включить соответствующий флаг трассировки для определенного запроса. Это можно сделать путем включения флага трассировки справа пакета (с помощью команды DBCC TRACEON) до запроса целевой и затем отключения трассировки вправо флаг (с помощью команды DBCC TRACEOFF) после выполнения запроса. Однако это возможно не всегда возможно для управления текст пакета Transact-SQL для существующих приложений. Может возникнуть низкой производительности запросов в текущую рабочую нагрузку и требуется применить доступных изменений, влияющих на план запроса без изменения самого текста пакета. Это можно сделать с помощью параметра уровне запросов для включения флага трассировки для определенного запроса. Начиная с Microsoft SQL Server 2005 г. Пакет обновления 2 (SP2) и Microsoft SQL Server 2008, параметр уровня запроса «QUERYTRACEON» доступен. Этот параметр позволяет включить флаг трассировки, влияющих на план только во время компиляции одного запроса. Как и другие параметры уровня запроса можно использовать его вместе с руководства плана в соответствии с текстом запроса, выполняемая из любого сеанса и автоматически применить флаг трассировки, влияющих на план, при компиляции запроса.

Дополнительная информация


QUERYTRACEON подсказка доступна как подсказку запроса, которое позволяет изменение влияющих на план оптимизатора запросов, которое управляется флаг трассировки. Как часть аналогична другим подсказок в запросепредложение OPTION указана подсказка QUERYTRACEON.

Синтаксис

<querytraceon_hint> ::=       { QUERYTRACEON trace_flag_number } 

Аргументы

QUERYTRACEON trace_flag_numberЭто указывает, влияющих на план номер флага трассировки, включается во время компиляции запроса. Поддерживаются следующие номера флаг трассировки:
Флаг трассировки Статьи базы знаний Майкрософт Доступно в
4199 974006 Накопительное обновление для SQL Server 2005 Пакет обновления 3; 6 Накопительного обновления 7 для SQL Server 2008; Накопительного обновления 7 для SQL Server 2008 Пакет обновления 1; SQL Server 2008 R2 и более поздних версий.
Охватывает все флаги трассировки 4199 974006 Накопительное обновление для SQL Server 2005 Пакет обновления 3; 6 Накопительного обновления 7 для SQL Server 2008; Накопительного обновления 7 для SQL Server 2008 Пакет обновления 1; SQL Server 2008 R2 и более поздних версий.
2335 2413549 SQL Server 2005 и более поздних версий.
2340 2009160 SQL Server 2005 и более поздних версий.
2389, 2390 Нет SQL Server 2005 и более поздних версий.
4136 980653 Накопительное обновление 9 для SQL Server 2005 Пакет обновления 3; Накопительного обновления 7 для SQL Server 2008 Пакет обновления 1; Накопительное обновление 2 для SQL Server 2008 R2 и более поздних версий.
4137 2658214 Накопительного обновления 8 для SQL Server 2008 Пакет обновления 2; Накопительного обновления 7 для SQL Server 2008 Пакет обновления 3; Накопительное обновление для SQL Server 2008 R2 Пакет обновления 1; 5 Накопительное обновление 1 для SQL Server 2012 и более поздних версий.
4138 2667211 13 накопительного обновления для SQL Server 2008 R2; Накопительного обновления 7 для SQL Server 2008 R2 Пакет обновления 1; Накопительное обновление 1 для SQL Server 2008 R2 Пакет обновления 2; Накопительное обновление 2 для SQL Server 2012 и более поздних версий.
Следующий план затрагивающих флаги трассировки, доступные 2014 Microsoft SQL Server.
Флаг трассировки Описание
9481 Используется при выполнении 2014 SQL Server с уровнем совместимости базы данных по умолчанию 120. Флаг трассировки 9481 заставляет оптимизатор запросов будет использовать версию 70 (версия SQL Server 2012) механизм оценки мощности при создании планов запросов.
2312 Используется при выполнении 2014 SQL Server с уровнем совместимости базы данных 110, который имеет уровень совместимости SQL Server 2012. Флаг трассировки 2312 заставляет оптимизатор запросов будет использовать версию 120 (версия SQL Server 2014) механизм оценки мощности при создании планов запросов.
 

Примечания

QUERYTRACEON параметр поддерживается только для оптимизатора запросов флаги трассировки, которые описаны в таблице раздела «Дополнительные сведения» и в Флагов трассировки. Однако этот параметр не будет возвращать ошибки или предупреждения при использовании номер флага трассировки не поддерживается. Если флаг трассировки указанного не тот, который оказывает влияние на план выполнения запроса, параметр будет игнорироваться молча.Более одного флага трассировки можно указать в предложении OPTION , если QUERYTRACEON trace_flag_number повторяется с номерами флаг трассировки различных.При выполнении запроса с помощью параметра QUERYTRACEON необходимо членство в фиксированной серверной роли sysadmin .Параметр QUERYTRACEON может использоваться в Руководства плана.

Примеры


  • Можно включить все исправления влияющих на план, управляется флаг трассировки 4199 для определенного запроса. Например можно использовать следующий запрос:
    SELECT x FROM correlated WHERE f1 = 0 and f2 = 1 OPTION (QUERYTRACEON 4199)
  • Можно включить все исправления влияющих на план, контролируются флаги трассировки 4199 и 4137 для определенного запроса. Например можно использовать следующий запрос:
    SELECT x FROM correlated WHERE f1 = 0 AND f2 = 1 OPTION (QUERYTRACEON 4199, QUERYTRACEON 4137)