Sdílet prostřednictvím


Návod: Příklady konfigurace Správce prostředků a osvědčené postupy

platí pro:SQL Serverazure SQL Managed Instance

Tento článek obsahuje příklady návodů, které vám pomůžou nakonfigurovat správce prostředků a ověřit, že vaše konfigurace funguje podle očekávání. Začíná jednoduchým příkladem a postupuje na složitější.

Tento článek obsahuje také příklady dotazů správce prostředků monitorování a seznam osvědčených postupů pro správce prostředků.

Všechny příklady předpokládají, že správce prostředků je zpočátku zakázaný a používá výchozí nastavení a že neexistují žádné uživatelem definované fondy zdrojů, skupiny úloh a funkce klasifikátoru.

Poznámka

Pokud chcete upravit konfiguraci správce prostředků ve službě Azure SQL Managed Instance, musíte být v kontextu databáze master na primární replice.

Úprava výchozí skupiny

Tento příklad používá správce prostředků k omezení maximální velikosti grantu paměti pro všechny dotazy uživatelů. To se provádí snížením nastavení REQUEST_MAX_MEMORY_GRANT_PERCENT pro skupinu úloh default z výchozích 25% na 10%. Příklad nepoužívá funkci klasifikátoru . To znamená, že zpracování přihlášení není ovlivněno a všechny uživatelské relace budou dál klasifikovány ve skupině úloh default.

Pokud dotazy čekají na paměť, může být potřeba omezit velikost přidělení paměti, protože jiné dotazy si rezervují příliš mnoho paměti. Další informace najdete v tématu Řešení potíží s nízkým výkonem nebo nedostatkem paměti způsobených udělením paměti v sql Serveru.

  1. Upravte výchozí skupinu úloh.

    ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10);
    
  2. Povolte správce prostředků, aby se naše konfigurace stala efektivní.

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  3. Ověřte nové nastavení, včetně nové maximální velikosti grantu paměti.

    SELECT group_id,
           wg.name AS workload_group_name,
           rp.name AS resource_pool_name,
           wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_percent,
           rp.max_memory_kb * wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_size_kb
    FROM sys.resource_governor_workload_groups AS wg
    INNER JOIN sys.dm_resource_governor_resource_pools AS rp
    ON wg.pool_id = rp.pool_id;
    
  4. Pokud se chcete vrátit k počáteční konfiguraci, spusťte následující skript:

    ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 25);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    ALTER RESOURCE GOVERNOR DISABLE;
    

Použití uživatelem definované skupiny úloh

Tento příklad používá správce prostředků k zajištění toho, aby se všechny požadavky na relace s konkrétním názvem aplikace nespustily se stupněm paralelismu (DOP) vyšším než čtyři. To se provádí klasifikací relací do skupiny úloh s nastavením MAX_DOP nastaveným na 4.

Další informace o konfiguraci maximálního stupně paralelismu naleznete v tématu Konfigurace serveru: maximální stupeň paralelismu.

  1. Vytvořte skupinu úloh, která omezuje DOP. Skupina používá fond prostředků default, protože chceme omezit DOP pro konkrétní aplikaci, ale nechceme rezervovat ani omezovat prostředky procesoru, paměti nebo vstupně-výstupních operací.

    CREATE WORKLOAD GROUP limit_dop
    WITH (
         MAX_DOP = 4
         )
    USING [default];
    
  2. Vytvořte funkci klasifikátoru. Funkce používá integrovanou funkci APP_NAME() k určení názvu aplikace zadaného v připojovacím řetězci klienta. Pokud je název aplikace nastavený na limited_dop_application, vrátí funkce název skupiny úloh, která omezuje DOP. V opačném případě funkce vrátí default jako název skupiny úloh.

    USE master;
    GO
    
    CREATE FUNCTION dbo.rg_classifier()
    RETURNS sysname
    WITH SCHEMABINDING
    AS
    BEGIN
    
    DECLARE @WorkloadGroupName sysname = N'default';
    
    IF APP_NAME() = N'limited_dop_application'
        SELECT @WorkloadGroupName = N'limit_dop';
    
    RETURN @WorkloadGroupName;
    
    END;
    GO
    
  3. Upravte konfiguraci správce prostředků, aby byla konfigurace efektivní, a povolte správce prostředků.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  4. Proveďte dotaz sys.resource_governor_configuration k ověření, zda je správce prostředků povolen a používá námi vytvořenou funkci klasifikátoru.

    SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name,
           OBJECT_NAME(classifier_function_id) AS classifier_object_name,
           is_enabled
    FROM sys.resource_governor_configuration;
    
    classifier_schema_name      classifier_object_name      is_enabled
    ----------------------      ----------------------      ----------
    dbo                         rg_classifier               1
    
  5. Ověřte, že relace s konkrétním názvem aplikace jsou klasifikovány do skupiny úloh limit_dop, zatímco ostatní relace se budou dál klasifikovat v default skupině úloh. K vrácení názvu aplikace a názvu skupiny úloh pro aktuální relaci použijeme dotaz, který používá sys.dm_exec_sessions a sys.resource_governor_workload_groups systémová zobrazení.

    1. V aplikaci SQL Server Management Studio (SSMS) vyberte v hlavní nabídce Soubor , Nový, Dotaz databázového enginu.

    2. V dialogovém okně Připojit k databázovému stroji zadejte stejnou instanci databázového stroje, ve které jste vytvořili skupinu úloh a funkci klasifikátoru. Vyberte kartu Další parametry připojení a zadejte App=limited_dop_application. SSMS tak při připojování k instanci používá limited_dop_application jako název aplikace.

    3. Vyberte Připojit a otevřete nové připojení.

    4. Ve stejném okně dotazu spusťte následující dotaz:

      SELECT s.program_name AS application_name,
             wg.name AS workload_group_name,
             wg.max_dop
      FROM sys.dm_exec_sessions AS s
      INNER JOIN sys.resource_governor_workload_groups AS wg
      ON s.group_id = wg.group_id
      WHERE s.session_id = @@SPID;
      

      Měli byste vidět následující výstup, který ukazuje, že relace byla klasifikována do skupiny úloh limit_dop s maximálním nastavením DOP na čtyři:

      application_name            workload_group_name     max_dop
      ----------------            -------------------     -------
      limited_dop_application     limit_dop               4
      
    5. Opakujte výše uvedené kroky, ale nezadávejte nic do pole na kartě Další parametry připojení. Výstup se změní a zobrazí výchozí název aplikace SSMS a skupinu úloh default s výchozí hodnotou 0 pro maximální hodnotu DOP.

      application_name                                    workload_group_name     max_dop
      ----------------                                    -------------------     -------
      Microsoft SQL Server Management Studio - Query      default                 0
      
  6. Pokud se chcete vrátit k počáteční konfiguraci tohoto příkladu, odpojte všechny relace pomocí skupiny úloh limit_dop a spusťte následující skript T-SQL. Skript obsahuje následující kroky:

    1. Zakázat správce prostředků, aby bylo možné funkci klasifikátoru odstranit.
    2. Odstraňte skupinu úloh. To vyžaduje, aby tuto skupinu úloh nepoužívala žádná instance.
    3. Překonfigurujte správce prostředků tak, aby znovu načítá efektivní konfiguraci bez funkce klasifikátoru a skupiny úloh. To umožňuje správce prostředků.
    4. Zakažte správce prostředků a vraťte se k počáteční konfiguraci.
    /* Disable resource governor so that the classifier function can be dropped. */
    ALTER RESOURCE GOVERNOR DISABLE;
    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL);
    DROP FUNCTION IF EXISTS dbo.rg_classifier;
    
    /* Drop the workload group. This requires that no sessions are using this workload group. */
    DROP WORKLOAD GROUP limit_dop;
    
    /* Reconfigure resource governor to reload the effective configuration without the classifier function and the workload group. This enables resource governor. */
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
    /* Disable resource governor to revert to the initial configuration. */
    ALTER RESOURCE GOVERNOR DISABLE;
    

Použití více fondů zdrojů a skupin úloh

Tento příklad používá správu prostředků k rozřazení relací z aplikace pro zpracování objednávek do různých skupin pracovní zátěže a fondů zdrojů v závislosti na denní době. Tato konfigurace přiděluje aplikaci více prostředků během doby zpracování ve špičce a omezuje její prostředky mimo pracovní dobu. Příklad předpokládá, že aplikace nepoužívá dlouhotrvající relace.

  1. Vytvořte dva fondy zdrojů pro zpracování ve špičce a mimo špičkový čas.

    • Fond peak_hours_pool zaručuje (rezervuje) minimálně 20% průměrné šířky pásma procesoru díky MIN_CPU_PERCENTa neomezuje šířku pásma procesoru tím, že nastaví MAX_CPU_PERCENT na 100.
    • Fond off_hours_pool nezarezervuje šířku pásma CPU nastavením hodnoty MIN_CPU_PERCENT na 0, ale omezuje šířku pásma CPU na 50%, když je při zatížení procesoru hodnota MAX_CPU_PERCENT nastavena na 50.
    CREATE RESOURCE POOL peak_hours_pool
    WITH (
         MIN_CPU_PERCENT = 20,
         MAX_CPU_PERCENT = 100
         );
    
    CREATE RESOURCE POOL off_hours_pool
    WITH (
         MIN_CPU_PERCENT = 0,
         MAX_CPU_PERCENT = 50
         );
    

    Fondy zdrojů můžou rezervovat a omezit systémové prostředky, jako jsou procesor, paměť a vstupně-výstupní operace. Další informace naleznete v tématu CREATE RESOURCE POOL.

  2. Vytvořte dvě skupiny úloh, jednu pro každý fond zdrojů.

    • peak_hours_group neomezuje počet souběžných požadavků nastavením GROUP_MAX_REQUESTS na výchozí hodnotu 0.
    • off_hours_group omezuje počet souběžných požadavků napříč všemi relacemi klasifikovanými do této skupiny nastavením GROUP_MAX_REQUESTS na 200.
    CREATE WORKLOAD GROUP peak_hours_group
    WITH (
         GROUP_MAX_REQUESTS = 0
         )
    USING peak_hours_pool;
    
    CREATE WORKLOAD GROUP off_hours_group
    WITH (
         GROUP_MAX_REQUESTS = 200
         )
    USING off_hours_pool;
    

    Skupiny úloh definují zásady, jako je maximální počet požadavků, maximální stupeň paralelismu a maximální velikost přidělení paměti. Další informace o tématu CREATE WORKLOAD GROUPnaleznete.

  3. Vytvořte a naplňte tabulku, která definuje časové intervaly špičky a mimo špičku.

    • Každý řádek v tabulce definuje počáteční a koncový čas intervalu a název skupiny úloh, která se má použít během intervalu.
    • Počáteční a koncový čas každého intervalu je inkluzivní.
    • Tabulka se vytvoří v master databázi, aby ji bylo možné použít ve funkci klasifikátoru vázaného schématem.
    USE master;
    GO
    
    CREATE TABLE dbo.workload_interval
    (
    workload_group_name sysname NOT NULL,
    start_time time(7) NOT NULL,
    end_time time(7) NOT NULL,
    CONSTRAINT pk_workload_interval PRIMARY KEY (start_time, workload_group_name),
    CONSTRAINT ak_workload_interval_1 UNIQUE (end_time, workload_group_name),
    CONSTRAINT ck_workload_interval_1 CHECK (start_time < end_time)
    );
    GO
    
    INSERT INTO dbo.workload_interval
    VALUES (N'off_hours_group', '00:00', '06:29:59.9999999'),
           (N'peak_hours_group', '06:30', '18:29:59.9999999'),
           (N'off_hours_group', '18:30', '23:59:59.9999999');
    
  4. Vytvořte funkci klasifikátoru.

    • Očekává se, že data v tabulce budou mít pro každý daný den jeden odpovídající řádek. Pokud data porušují toto pravidlo, funkce vrátí default jako název skupiny úloh.
    • Následující ukázková funkce také vrátí default pokud název aplikace vrácený předdefinované funkce APP_NAME() je cokoli jiného než order_processing.
    USE master;
    GO
    
    CREATE OR ALTER FUNCTION dbo.rg_classifier()
    RETURNS sysname
    WITH SCHEMABINDING
    AS
    BEGIN
    
    DECLARE @WorkloadGroupName sysname = N'default';
    
    SELECT @WorkloadGroupName = workload_group_name
    FROM dbo.workload_interval
    WHERE APP_NAME() = N'order_processing'
          AND
          CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time;
    
    IF @@ROWCOUNT > 1
        SELECT @WorkloadGroupName = N'default';
    
    RETURN @WorkloadGroupName;
    
    END;
    GO
    
  5. Tento krok je volitelný. Místo vytvoření tabulky v databázi master můžete pomocí konstruktoru s hodnotou tabulky definovat časové intervaly přímo ve funkci klasifikátoru. Tento postup se doporučuje, když je velikost dat malá a kritéria klasifikátoru se často nemění. Tady je příklad stejného klasifikátoru, který používá konstruktora, který vrací hodnoty tabulky, místo tabulky v master.

    USE master;
    GO
    
    CREATE OR ALTER FUNCTION dbo.rg_classifier()
    RETURNS sysname
    WITH SCHEMABINDING
    AS
    BEGIN
    
    DECLARE @WorkloadGroupName sysname = N'default';
    
    SELECT @WorkloadGroupName = workload_group_name
    FROM (
         VALUES (CAST(N'off_hours_group' AS sysname),  CAST('00:00' AS time(7)), CAST('06:29:59.9999999' AS time(7))),
                (CAST(N'peak_hours_group' AS sysname), CAST('06:30' AS time(7)), CAST('18:29:59.9999999' AS time(7))),
                (CAST(N'off_hours_group' AS sysname),  CAST('18:30' AS time(7)), CAST('23:59:59.9999999'AS time(7)))
         ) AS wg (workload_group_name, start_time, end_time)
    WHERE APP_NAME() = N'order_processing'
          AND
          CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time;
    
    IF @@ROWCOUNT > 1
        SELECT @WorkloadGroupName = N'default';
    
    RETURN @WorkloadGroupName;
    
    END;
    GO
    
  6. Upravte konfiguraci správce prostředků, aby byla konfigurace efektivní, a povolte správce prostředků.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  7. Ověřte, že správce prostředků je povolený, že používá určenou klasifikační funkci a že tato funkce funguje podle očekávání, a to pomocí podobných kroků jako v předchozím příkladu . Tentokrát zadáme hodnotu App=order_processing na kartě Další parametry připojení v dialogovém okně pro připojení SSMS tak, aby odpovídal názvu aplikace ve funkci klasifikátoru. Spuštěním následujícího dotazu určete název aplikace, skupinu úloh, fond prostředků a rezervaci procesoru a limit pro aktuální relaci:

    SELECT s.program_name AS application_name,
           wg.name AS workload_group_name,
           wg.group_max_requests,
           rp.name AS resource_pool_name,
           rp.min_cpu_percent,
           rp.max_cpu_percent
    FROM sys.dm_exec_sessions AS s
    INNER JOIN sys.resource_governor_workload_groups AS wg
    ON s.group_id = wg.group_id
    INNER JOIN sys.resource_governor_resource_pools AS rp
    ON wg.pool_id = rp.pool_id
    WHERE s.session_id = @@SPID;
    

    Výsledky závisí na denním čase. Pokud je například aktuální čas 14:30, výsledek ukazuje, že se použijí peak_hours_group a peak_hours_pool:

    application_name    workload_group_name     group_max_requests      resource_pool_name      min_cpu_percent     max_cpu_percent
    -----------------   --------------------    ------------------      -------------------     ---------------     ---------------
    order_processing    peak_hours_group        0                       peak_hours_pool         20                  100
    
  8. Pokud se chcete vrátit k počáteční konfiguraci tohoto příkladu, odpojte všechny relace pomocí skupin úloh peak_hours_group a off_hours_group a spusťte následující skript T-SQL. Skript obsahuje následující kroky:

    1. Zakažte správce prostředků, aby bylo možné funkci klasifikátoru vynechat.
    2. Odstraňte skupiny úloh. Aby žádné relace nepoužívaly tyto skupiny úloh, je to vyžadováno.
    3. Jakmile vyřadíte skupiny úloh, smažte fondy zdrojů.
    4. Překonfigurujte správce prostředků tak, aby znovu načítá efektivní konfiguraci bez funkce klasifikátoru a skupin úloh definovaných uživatelem a fondů prostředků. Toto aktivuje správce prostředků.
    5. Zakažte správce prostředků a vraťte se k počáteční konfiguraci.
    /* Disable resource governor so that the classifier function can be dropped. */
    ALTER RESOURCE GOVERNOR DISABLE;
    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL);
    DROP FUNCTION IF EXISTS dbo.rg_classifier;
    DROP TABLE IF EXISTS dbo.workload_interval;
    
    /* Drop the workload groups. This requires that no sessions are using these workload groups. */
    DROP WORKLOAD GROUP peak_hours_group;
    DROP WORKLOAD GROUP off_hours_group;
    
    /* Once the workload groups are dropped, drop the resource pools. */
    DROP RESOURCE POOL peak_hours_pool;
    DROP RESOURCE POOL off_hours_pool;
    
    /* Reconfigure resource governor to reload the effective configuration without the classifier function and user-defined workload groups and resource pools. This enables resource governor. */
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
    /* Disable resource governor to revert to the initial configuration. */
    ALTER RESOURCE GOVERNOR DISABLE;
    

Monitorování správce prostředků pomocí systémových zobrazení

Ukázkové dotazy v této části ukazují, jak můžete monitorovat statistiky a chování runtime Resource Governoru.

Statistiky správce prostředků jsou kumulativní od posledního restartování serveru. Pokud potřebujete shromažďovat statistiky od určitého času, můžete statistiky resetovat pomocí příkazu ALTER RESOURCE GOVERNOR RESET STATISTICS.

Statistiky modulu runtime fondu zdrojů

U každého fondu zdrojů správce prostředků sleduje využití procesoru a paměti, události nedostatku paměti, granty paměti, vstupně-výstupní operace a další statistiky. Další informace naleznete v tématu sys.dm_resource_governor_resource_pools.

Následující dotaz vrátí podmnožinu dostupných statistik pro všechny fondy zdrojů:

SELECT rp.pool_id,
       rp.name AS resource_pool_name,
       wg.workload_group_count,
       rp.statistics_start_time,
       rp.total_cpu_usage_ms,
       rp.target_memory_kb,
       rp.used_memory_kb,
       rp.out_of_memory_count,
       rp.active_memgrant_count,
       rp.total_memgrant_count,
       rp.total_memgrant_timeout_count,
       rp.read_io_completed_total,
       rp.write_io_completed_total,
       rp.read_bytes_total,
       rp.write_bytes_total,
       rp.read_io_stall_total_ms,
       rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
            SELECT COUNT(1) AS workload_group_count
            FROM sys.dm_resource_governor_workload_groups AS wg
            WHERE wg.pool_id = rp.pool_id
            ) AS wg;

Statistika runtime skupiny pracovního zatížení

Pro každou skupinu úloh správce prostředků sleduje čas procesoru, počet požadavků, blokované úlohy, dobu čekání na uzamčení, optimalizaci dotazů a další statistiky. Další informace najdete v tématu sys.resource_governor_workload_groups.

Následující dotaz vrátí podmnožinu dostupných statistik pro všechny skupiny úloh:

SELECT wg.name AS workload_group_name,
       rp.name AS resource_pool_name,
       wg.statistics_start_time,
       wg.total_request_count,
       wg.total_cpu_usage_ms,
       wg.blocked_task_count,
       wg.total_lock_wait_time_ms,
       wg.total_query_optimization_count,
       wg.max_request_grant_memory_kb,
       wg.active_parallel_thread_count,
       wg.effective_max_dop,
       wg.request_max_memory_grant_percent_numeric
FROM sys.dm_resource_governor_workload_groups AS wg
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id

Agregace relací podle skupin úloh a atributů relací

Následující dotaz vrátí rozložení relací mezi různými skupinami pracovního zatížení a souhrnné statistiky relací pro každou skupinu pracovního zatížení.

Vysoký počet relací se stavem preconnect může znamenat zpomalení při provádění klasifikátoru.

SELECT wg.name AS workload_group_name,
       rp.name AS resource_pool_name,
       s.program_name AS application_name,
       s.login_name,
       s.host_name,
       s.status,
       d.name AS database_name,
       MIN(s.login_time) AS first_login_time,
       MAX(s.login_time) AS last_login_time,
       MAX(s.last_request_start_time) AS last_request_start_time,
       COUNT(1) AS session_count
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON s.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON s.database_id = d.database_id
GROUP BY wg.name,
         rp.name,
         s.program_name,
         s.login_name,
         s.host_name,
         s.status,
         d.name;

Agregace požadavků podle skupin úloh a atributů požadavků

Následující dotaz vrátí distribuci požadavků napříč skupinami úloh a agregační statistiky požadavků pro každou skupinu úloh:

SELECT wg.name AS workload_group_name,
       rp.name AS resource_pool_name,
       r.command,
       r.status,
       d.name AS database_name,
       COUNT(1) AS request_count,
       MIN(r.start_time) AS first_request_start_time,
       MAX(r.start_time) AS last_request_start_time,
       SUM(CAST(r.total_elapsed_time AS bigint)) AS total_elapsed_time_ms
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON r.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON r.database_id = d.database_id
GROUP BY wg.name,
         rp.name,
         r.command,
         r.status,
         d.name;

Osvědčené postupy pro správce prostředků

  • Nakonfigurujte vyhrazené připojení správce (DAC) a zjistěte, jak ho používat. Další informace naleznete v tématu Diagnostické připojení pro správce databáze. Pokud vaše konfigurace správce prostředků nefunguje správně, můžete ji pomocí DAC vyřešit nebo zakázat správce prostředků.
  • Při konfiguraci fondů zdrojů buďte opatrní při zadávání velkých hodnot pro MIN_CPU_PERCENT, MIN_MEMORY_PERCENTa MIN_IOPS_PER_VOLUME. Nastavení konfigurace MIN rezervuje prostředky pro fond zdrojů a znepřístupňuje je ostatním fondům zdrojů, včetně fondu default. Další informace najdete v tématu Vytvoření fondu zdrojů.
  • Funkce klasifikátoru rozšiřuje dobu zpracování přihlášení. Vyhněte se složitým logikám a dlouhotrvajícím dotazům nebo dotazům náročným na prostředky v klasifikátoru, zejména pokud dotazy používají velké tabulky. Příliš složitá funkce může způsobit zpoždění přihlášení nebo vypršení časového limitu připojení.
  • Pokud potřebujete použít tabulku v klasifikátoru a tabulka je malá a většinou statická, zvažte použití konstruktoru hodnotné tabulky, jak je znázorněno v příkladu dříve v tomto článku.
  • Nepoužívejte často upravenou tabulku v klasifikátoru. Tím se zvyšuje riziko blokování, které může zpozdit přihlášení a způsobit vypršení časového limitu připojení. Následující alternativní řešení můžou riziko zmírnit, ale mají nevýhodu, včetně rizika nesprávné klasifikace:
    • Zvažte použití nápovědy NOLOCK tabulky nebo ekvivalentní nápovědy READUNCOMMITTED. Další informace naleznete v tématu READUNCOMMITTED.
    • Zvažte použití nastavení LOCK_TIMEOUT na začátku funkce klasifikátoru a jeho nastavení na nízkou hodnotu, například 1 000 milisekund. Další informace naleznete v tématu SET LOCK_TIMEOUT.
  • Funkci klasifikátoru nemůžete upravit, když se na ni odkazuje v konfiguraci správce prostředků. Konfiguraci však můžete upravit tak, aby používala jinou funkci klasifikátoru. Pokud chcete provést změny klasifikátoru, zvažte vytvoření dvojice funkcí klasifikátoru. Můžete například vytvořit dbo.rg_classifier_A() a dbo.rg_classifier_B(). Pokud je potřeba změnit logiku klasifikátoru, postupujte takto:
    1. Pomocí příkazu ALTER FUNCTION proveďte změny ve funkci , která není aktuálně používána v konfiguraci správce prostředků.
    2. Pomocí příkazu ALTER RESOURCE GOVERNOR aktivujte upravený klasifikátor a pak překonfigurujte správce prostředků. Například:
      ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier_B);
      ALTER RESOURCE GOVERNOR RECONFIGURE;
      
    3. Pokud je změna znovu nutná, použijte stejný postup pomocí druhé funkce (dbo.rg_classifier_A()).
  • Konfigurace správce prostředků je uložená v databázi master. Nezapomeňte pravidelně zálohovat mastera vědět, jak ho obnovit. Další informace naleznete v tématu Zálohování a obnovení: Systémové databáze. Vzhledem k tomu, že obnovení mastermá určitá omezení, doporučujeme uložit kopii konfiguračních skriptů správce prostředků samostatně. Konfiguraci správce prostředků můžete znovu vytvořit ze skriptů, pokud je potřeba znovu vytvořit master databázi.