sp_query_store_force_plan (Transact-SQL)

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure

Включает принудительное принудительное выполнение определенного плана для конкретного запроса в хранилище запросов.

При принудительном выполнении плана для конкретного запроса каждый раз, когда SQL Server сталкивается с запросом, он пытается принудительно применить план в оптимизаторе запросов. Если это не удастся сделать, запускается расширенное событие, и оптимизатору запросов предписывается выполнить оптимизацию обычным способом.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_query_store_force_plan
    [ @query_id = ] query_id ,
    [ @plan_id = ] plan_id ,
    [ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing ,
    [ @force_plan_scope = ] 'replica_group_id'
[ ; ]

Аргументы

[ @query_id = ] query_id

Идентификатор запроса. @query_id является bigint, без значения по умолчанию.

[ @plan_id = ] plan_id

Идентификатор плана запроса, который необходимо принудительно принудить. @plan_id является bigint, без значения по умолчанию.

[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing

Указывает, следует ли отключить принудительное выполнение оптимизированного плана. @disable_optimized_plan_forcing бит по умолчанию0.

[ @force_plan_scope = ] 'реплика_group_id'

При включении дополнительных хранилище запросов дополнительных реплика можно принудительно заставить планы на дополнительных реплика. Выполнение sp_query_store_force_plan и sp_query_store_unforce_plan выполнение дополнительных реплика. Необязательный аргумент @force_plan_область по умолчанию используется только для локальной реплика (основной или вторичной), но при необходимости можно указать реплика_group_id ссылки sys.query_store_реплика.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

Результирующий план выполнения, вынужденный этой функцией, совпадает или аналогичен принудительному выполнению плана. Так как итоговый план может не совпадать с планом, указанным в инструкции sys.sp_query_store_force_plan, производительность этих планов может различаться. В редких случаях возможна значительная негативная разница в производительности, и тогда администратору следует удалить принудительный план.

Просмотрите принудительные планы на вторичных реплика с помощью sys.query_store_plan_forcing_locations.

Разрешения

Необходимо разрешение ALTER для базы данных.

Примеры

В следующем примере возвращаются сведения о запросах в хранилище запросов.

SELECT txt.query_text_id,
    txt.query_sql_text,
    pl.plan_id,
    qry.*
FROM sys.query_store_plan AS pl
INNER JOIN sys.query_store_query AS qry
    ON pl.query_id = qry.query_id
INNER JOIN sys.query_store_query_text AS txt
    ON qry.query_text_id = txt.query_text_id;

После определения query_id и plan_id, которые требуется принудительно, используйте следующий пример, чтобы принудительно использовать план.

EXEC sp_query_store_force_plan
    @query_id = 3,
    @plan_id = 3;

Используйте sys.query_store_plan_forcing_locations, присоединенные к sys.query_store_реплика, чтобы получить планы хранилище запросов принудительно для всех вторичных реплика.

SELECT query_plan
FROM sys.query_store_plan AS qsp
INNER JOIN sys.query_store_plan_forcing_locations AS pfl
    ON pfl.query_id = qsp.query_id
INNER JOIN sys.query_store_replicas AS qsr
    ON qsr.replica_group_id = qsp.replica_group_id
WHERE qsr.replica_name = 'yourSecondaryReplicaName';