sp_query_store_force_plan (Transact-SQL)
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Abilita l'uso forzato di un piano specifico per una determinata query nell'archivio query.
Quando un piano viene forzato per una query specifica, ogni volta che SQL Server rileva la query, tenta di forzare il piano in Query Optimizer. Se l'uso forzato del piano ha esito negativo, viene generato un evento esteso e Query Optimizer viene indicato di ottimizzare in modo normale.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
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'
[ ; ]
Argomenti
[ @query_id = ] query_id
ID della query. @query_id è bigint, senza impostazione predefinita.
[ @plan_id = ] plan_id
ID del piano di query da forzare. @plan_id è bigint, senza impostazione predefinita.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Indica se l'uso forzato del piano ottimizzato deve essere disabilitato. @disable_optimized_plan_forcing è bit con un valore predefinito .0
[ @force_plan_scope = ] 'replica_group_id'
È possibile forzare i piani in una replica secondaria quando Query Store per le repliche secondarie è abilitato. Eseguire sp_query_store_force_plan
e sp_query_store_unforce_plan
nella replica secondaria. L'argomento facoltativo @force_plan_scope viene impostato come predefinito solo sulla replica locale (primaria o secondaria), ma facoltativamente è possibile specificare un replica_group_id che fa riferimento a sys.query_store_replicas.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
Il piano di esecuzione risultante forzato da questa funzionalità è lo stesso o simile al piano forzato. Poiché il piano risultante potrebbe non essere identico al piano specificato da sys.sp_query_store_force_plan
, le prestazioni dei piani possono variare. In rari casi, la differenza di prestazioni potrebbe essere significativa e negativa; in tal caso, l'amministratore deve rimuovere il piano forzato.
Esaminare i piani forzati nelle repliche secondarie con sys.query_store_plan_forcing_locations.
Autorizzazioni
È necessaria l'autorizzazione ALTER per il database.
Esempi
Nell'esempio seguente vengono restituite informazioni sulle query in 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;
Dopo aver identificato il query_id e plan_id da forzare, usare l'esempio seguente per forzare l'uso di un piano da parte della query.
EXEC sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
Usare sys.query_store_plan_forcing_locations, unito con sys.query_store_replicas, per recuperare Query Store per le repliche secondarie.
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';
Contenuto correlato
- 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)
- Viste del catalogo di Query Store (Transact-SQL)
- Monitorare le prestazioni tramite Query Store
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Procedure consigliate per Query Store