Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2016 (13.x) a novější
azure SQL Database
azure SQL Managed Instance
Umožňuje vynucovat konkrétní plán konkrétního dotazu v úložišti dotazů.
Když je plán vynucen pro konkrétní dotaz, pokaždé, když SQL Server narazí na dotaz, pokusí se vynutit plán v Optimalizátoru dotazů. Pokud dojde k selhání vynucení plánu, aktivuje se rozšířená událost a optimalizátor dotazů se dá pokyn k optimalizaci běžným způsobem.
Syntax
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'
[ ; ]
Argumenty
Důležitý
Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.
[ @query_id = ] query_id
ID dotazu. @query_id je bigint, bez výchozího nastavení.
[ @plan_id = ] plan_id
ID plánu dotazu, který se má vynutit. @plan_id je bigint, bez výchozího nastavení.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Určuje, jestli má být optimalizovaný plán vynucení zakázán.
@disable_optimized_plan_forcing je bit s výchozím 0
.
[ @force_plan_scope = ] 'replica_group_id'
Plány na sekundární repliku můžete vynutit, když úložiště dotazů pro sekundární repliky povoleno. Na primární replice spusťte sp_query_store_force_plan
a sp_query_store_unforce_plan
. Pomocí argumentu @force_plan_scope se ve výchozím nastavení použije místní replika, ve které se příkaz spouští, ale můžete zadat replica_group_id odkazující na zobrazení katalogu systému sys.query_store_plan_forcing_locations.
Návratové hodnoty kódu
0
(úspěch) nebo 1
(selhání).
Poznámky
Výsledný plán provádění vynucený touto funkcí je stejný nebo podobný plánu, který je vynucený. Vzhledem k tomu, že výsledný plán nemusí být identický s plánem určeným sys.sp_query_store_force_plan
, může se výkon plánů lišit. Ve výjimečných případech může být rozdíl v výkonu významný a negativní; v takovém případě musí správce odebrat vynucený plán.
Zkontrolujte vynucené plány na sekundárních replikách pomocí sys.query_store_plan_forcing_locations.
Dovolení
Vyžaduje oprávnění ALTER pro databázi.
Příklady
Následující příklad vrátí informace o dotazech v úložišti dotazů.
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;
Po identifikaci query_id a plan_id, které chcete vynutit, použijte následující příklad k vynucení použití plánu dotazu.
EXEC sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
K načtení úložiště dotazů pro sekundární replikypoužijte sys.query_store_plan_forcing_locations, připojené k 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';
Související obsah
- 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)
- zobrazení katalogu úložiště dotazů (Transact-SQL)
- Monitorování výkonu pomocí úložiště dotazů
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- osvědčený postup s úložiště dotazů