sp_query_store_force_plan (Transact-SQL)
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Hiermee kunt u een bepaald plan afdwingen voor een bepaalde query in de Query Store.
Wanneer een plan wordt gedwongen voor een bepaalde query, telkens wanneer SQL Server de query tegenkomt, wordt geprobeerd het plan af te dwingen in de Query Optimizer. Als het afdwingen van plannen mislukt, wordt een uitgebreide gebeurtenis geactiveerd en wordt de queryoptimalisatie op de normale manier geïnstrueerd.
Transact-SQL syntaxisconventies
Syntaxis
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'
[ ; ]
Argumenten
Belangrijk
Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.
[ @query_id = ] query_id
De id van de query. @query_id is grote, zonder standaardinstelling.
[ @plan_id = ] plan_id
De id van het queryplan dat moet worden geforceerd. @plan_id is bigint, zonder standaardinstelling.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Hiermee wordt aangegeven of het afdwingen van een geoptimaliseerd plan moet worden uitgeschakeld.
@disable_optimized_plan_forcing is bit met een standaardwaarde van 0
.
[ @force_plan_scope = ] 'replica_group_id'
U kunt plannen op een secundaire replica afdwingen wanneer Query Store voor secundaire replica's is ingeschakeld is ingeschakeld. Voer sp_query_store_force_plan
en sp_query_store_unforce_plan
uit op de primaire replica. Als u het argument @force_plan_scope gebruikt, wordt standaard de lokale replica gebruikt waar de opdracht wordt uitgevoerd, maar u kunt een replica_group_id opgeven die verwijst naar de sys.query_store_plan_forcing_locations systeemcatalogusweergave.
Codewaarden retourneren
0
(geslaagd) of 1
(mislukt).
Opmerkingen
Het resulterende uitvoeringsplan dat door deze functie wordt gedwongen, is hetzelfde of vergelijkbaar met het plan dat wordt gedwongen. Omdat het resulterende plan mogelijk niet identiek is aan het plan dat is opgegeven door sys.sp_query_store_force_plan
, kunnen de prestaties van de plannen variëren. In zeldzame gevallen kan het prestatieverschil aanzienlijk en negatief zijn; In dat geval moet de beheerder het geforceerde plan verwijderen.
Bekijk geforceerde plannen op secundaire replica's met sys.query_store_plan_forcing_locations.
Machtigingen
Hiervoor is de machtiging ALTER vereist voor de database.
Voorbeelden
In het volgende voorbeeld wordt informatie geretourneerd over de query's in de Query Store.
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;
Nadat u de query_id en plan_id hebt geïdentificeerd die u wilt afdwingen, gebruikt u het volgende voorbeeld om af te dwingen dat de query een plan gebruikt.
EXEC sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
Gebruik sys.query_store_plan_forcing_locations, gekoppeld aan sys.query_store_replicas, om Query Store op te halen voor secundaire replica's.
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';
Verwante inhoud
- 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)
- Query Store-catalogusweergaven (Transact-SQL)
- Prestaties bewaken met behulp van de Query Store-
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Best Practice met de Query Store-