Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowszych
Azure SQL Database
Azure SQL Managed Instance
Umożliwia wymuszanie określonego planu dla określonego zapytania w magazynie zapytań.
Gdy plan jest wymuszany dla określonego zapytania, za każdym razem, gdy program SQL Server napotka zapytanie, próbuje wymusić plan w optymalizatorze zapytań. Jeśli wymuszanie planu zakończy się niepowodzeniem, zostanie wyzwolone zdarzenie rozszerzone, a optymalizator zapytań zostanie poinstruowany o optymalizację w normalny sposób.
Transact-SQL konwencje składni
Składnia
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 (w programowaniu)
Ważne
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
[ @query_id = ] query_id
Identyfikator zapytania. @query_id jest bigint, bez wartości domyślnej.
[ @plan_id = ] plan_id
Identyfikator planu zapytania, który ma zostać wymuszony. @plan_id jest bigint, bez wartości domyślnej.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Wskazuje, czy wymuszenie zoptymalizowanego planu powinno być wyłączone.
@disable_optimized_plan_forcing jest nieco z wartością domyślną 0
.
[ @force_plan_scope = ] 'replica_group_id'
Plany można wymusić na repliki pomocniczej, gdy jest włączony magazyn zapytań dla czytelnych sekund . Wykonaj sp_query_store_force_plan
i sp_query_store_unforce_plan
w repliki podstawowej. Używając argumentu @force_plan_scope domyślnie do repliki lokalnej, w której jest wykonywane polecenie, ale można określić replica_group_id odwołującą się do widoku wykazu systemu sys.query_store_plan_forcing_locations.
Zwracanie wartości kodu
0
(powodzenie) lub 1
(niepowodzenie).
Uwagi
Wynikowy plan wykonania wymuszony przez tę funkcję jest taki sam lub podobny do wymuszanego planu. Ponieważ wynikowy plan może nie być identyczny z planem określonym przez sys.sp_query_store_force_plan
program , wydajność planów może się różnić. W rzadkich przypadkach różnica wydajności może być znacząca i ujemna; w takim przypadku administrator musi usunąć wymuszony plan.
Przejrzyj plany wymuszone na replikach pomocniczych przy użyciu sys.query_store_plan_forcing_locations.
Uprawnienia
Wymaga uprawnienia ALTER w bazie danych.
Przykłady
Poniższy przykład zwraca informacje o zapytaniach w magazynie zapytań.
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 zidentyfikowaniu query_id i plan_id , które chcesz wymusić, użyj poniższego przykładu, aby wymusić użycie planu przez zapytanie.
EXECUTE sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
Użyj sys.query_store_plan_forcing_locations, połączonego z sys.query_store_replicas, aby pobrać magazyn zapytań dla czytelnych sekund.
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';
Treści powiązane
- 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)
- widoki katalogu Query Store (Transact-SQL)
- Monitorowanie wydajności za pomocą magazynu zapytań
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Najlepsze praktyki z magazynem zapytań