Sdílet prostřednictvím


sp_configure_automatic_tuning (Transact-SQL)

Platí pro: SQL Server 2022 (16.x) a novější verze databáze SQL Azure SQL DatabaseAzure SQL Managed Instancev Microsoft Fabric

Změní konfiguraci součásti automatické opravy plánu (APC) funkce automatického ladění. Možnosti konfigurace platí pro danou , kterou lze získat zúložiště dotazů .

Mezi tyto možnosti patří možnost povolit povolení nebo přeskočení query_id pro posouzení APC nebo nakonfigurovat APC tak, aby na tento konkrétní dotaz použila další rozšířenou regresi plánu na základě času. Možnosti konfigurace se vzájemně nevylučují.

Transact-SQL konvence syntaxe

Syntaxe

Syntaxe pro SQL Server 2022 (16.x), Spravovaná instance Azure SQL:

sp_configure_automatic_tuning
    [ @option = ] 'FORCE_LAST_GOOD_PLAN'
    , [ @type = ] 'type'
    [ , [ @type_value = ] N'type_value' ]
    , [ @option_value = ] { 'ON' | 'OFF' }

Syntaxe pro Azure SQL Database, databázi SQL v Microsoft Fabric:

sp_configure_automatic_tuning
    [ @option = ] { 'FORCE_LAST_GOOD_PLAN' | 'FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK' }
    , [ @type = ] 'type'
    [ , [ @type_value = ] N'type_value' ]
    , [ @option_value = ] { 'ON' | 'OFF' }

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ě.

[ @option = ] Možnost'

Určuje název možnosti konfigurace, která se má vyvolat. @option je varchar(60), bez výchozího nastavení a může to být jedna z těchto hodnot.

Hodnota Popis
FORCE_LAST_GOOD_PLAN Umožňuje APC identifikovat regrese výběru plánu provádění a automaticky opravit problém vynucením posledního známého dobrého plánu zaznamenaného v úložišti dotazů. Viz Co je regrese výběru plánu provádění?
FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK platí pouze pro: azure SQL Database a databáze SQL v Microsoft Fabric. Dává APC pokyn, aby použil další kontrolu regrese plánu na základě času, která nastane pět minut po zjištění změny plánu. Tato kontrola umožňuje APC zabránit předsudkům v kontrolách regrese dotazů, které se provádějí rychle. S touto možností APC bere v úvahu provádění dotazů, které můžou běžet déle nebo jsou náchylné k načasování kvůli změně plánu.

[ @type = ] 'typ'

Typ objektu, na který se konfigurace vztahuje. @type je varchar(60) bez výchozího nastavení. Možná hodnota je QUERY.

[ @type_value = ] N'type_value'

ID dotazu z úložiště dotazů, na které by se měla konfigurace použít. @type_value sysname bez výchozích hodnot.

[ @option_value = ] 'option_value'

Požadovaný stav nastavení konfigurace. @option_valuevarchar(60) bez výchozích hodnot. Možné hodnoty jsou ON nebo OFF. U možnosti FORCE_LAST_GOOD_PLAN nastavení hodnoty na OFF způsobí, že APC ignoruje query_id v úložišti dotazů, aby systém monitoroval regrese plánu dotazů.

Návratové hodnoty kódu

0 (úspěch) nebo 1 (selhání).

Kontrola aktuálních hodnot konfigurace

Můžete také zkontrolovat, které možnosti konfigurace jsou nastaveny, zobrazením výstupu zobrazení sys.database_automatic_tuning_configurations katalogu. Změny zobrazení katalogu se také zapisují do protokolu chyb SQL Serveru.

Dovolení

Vyžaduje oprávnění ALTER DATABASE.

Poznámky

Pro SQL Server 2022 (16.x) CU 4 a novější verze lze chování možnosti konfigurace FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK použít pro celou instanci SQL Serveru s globálním příznakem trasování 12656. Všechny dotazy, které mají nárok na zachytávání úložiště dotazů, mají použitou další logiku kontroly regrese na základě času.

Příklady

A. Konfigurace možnosti automatického ladění (vynucení posledního dobrého plánu) pro ignorování konkrétního dotazu

Následující příklad ukazuje, jak nakonfigurovat automatické ladění tak, aby ignoroval dotaz, pokud má nárok na automatické vynucení plánu. Tento příklad používá hodnotu 422 jako query_id, která byla vybrána z úložiště dotazů.

EXECUTE sys.sp_configure_automatic_tuning 'FORCE_LAST_GOOD_PLAN', 'QUERY', 422, 'OFF';

B. Konfigurace možnosti automatického ladění (vynucení posledního dobrého plánu) pro ignorování konkrétního dotazu pomocí pojmenovaných parametrů

V tomto příkladu vidíme všechny query_id výsledky, které jsou součástí všech aktualizačních příkazů kurzoru, které jsou vynuceny funkcí APC.

SELECT qry.query_id,
       pl.plan_forcing_type_desc,
       pl.is_forced_plan,
       pl.plan_id
FROM sys.query_store_plan AS pl
     INNER JOIN sys.query_store_query AS qry
         ON qry.query_id = pl.query_id
WHERE pl.query_plan LIKE '%StatementType="UPDATE CURSOR"%'
      AND pl.is_forced_plan > 0
      AND pl.plan_forcing_type = 2;

Na základě výsledků předchozího dotazu je query_id s hodnotou 42 dotaz, který by měl APC ignorovat. Pojmenovanou verzi syntaxe parametru můžeme použít pro sp_configure_automatic_tuning následujícím způsobem.

EXECUTE sys.sp_configure_automatic_tuning
    @option = 'FORCE_LAST_GOOD_PLAN',
    @type = 'QUERY',
    @type_value = 42,
    @option_value = 'OFF';

Zkontrolujte, jestli je použité nastavení.

SELECT *
FROM sys.database_automatic_tuning_configurations;

C. Konfigurace automatického ladění (vynucení posledního dobrého plánu) pro použití rozšířené kontroly regrese plánu na základě času na konkrétní dotaz

platí pro: Azure SQL Database, databáze SQL v Microsoft Fabric:

APC používá kontrolu regrese plánu na základě času, která nastane pět minut po zjištění změny plánu. Tato kontrola umožňuje APC zabránit předsudkům v kontrolách regrese dotazů, které se provádějí rychle. APC bere v úvahu provádění dotazů, které můžou běžet déle nebo jsou náchylné k časovým limitům kvůli změně plánu.

Následující příklad ukazuje, jak nakonfigurovat automatické ladění tak, aby na dotaz použila rozšířenou logiku kontroly, pokud má nárok na automatické vynucení plánu. Tento příklad používá hodnotu 442 jako query_id, která byla vybrána z úložiště dotazů.

EXECUTE sys.sp_configure_automatic_tuning 'FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK', 'QUERY', 442, 'ON';