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 = ] 'replica_group_id'
При включении дополнительных реплик можно принудительно планировать планы на вторичной реплике, если хранилище запросов для вторичных реплик. Выполните sp_query_store_force_plan
и sp_query_store_unforce_plan
на вторичной реплике. Необязательный аргумент @force_plan_scope по умолчанию используется только для локальной реплики (основной или вторичной), но при необходимости можно указать replica_group_id ссылки sys.query_store_replicas.
Значения кода возврата
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_replicas, для получения хранилище запросов для вторичных реплик.
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';
Связанный контент
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.query_store_replicas (Transact-SQL)
- sp_query_store_remove_plan (Transact-SQL)
- sp_query_store_remove_query (Transact-SQL)
- sp_query_store_unforce_plan (Transact-SQL)
- Представления каталога хранилища запросов (Transact-SQL)
- Мониторинг производительности с использованием хранилища запросов
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Рекомендации по хранилищу запросов