Oktatóanyag: Példák a tempdb térerőforrás-szabályozásának konfigurálására

A következőkre vonatkozik: SQL Server 2025 (17.x) és újabb verziók

A cikkben szereplő példák bemutatják, hogyan állíthat be térhasználati tempdb korlátokat, és hogyan tekintheti meg a területfelhasználást tempdb az egyes számítási feladatok csoportjai szerint.

A térerőforrás-szabályozás tempdb bemutatása: Tempdb térerőforrás-szabályozás.

Ezek a példák segítenek megismerni az űrerőforrás-szabályozást tempdb egy tesztkörnyezetben, nem gyártási környezetben.

A példák azt feltételezik, hogy az erőforrás-vezérlő kezdetben nincs engedélyezve, és a konfigurációja nem változik az alapértelmezetttől. Azt is feltételezik, hogy az SQL Server-példány egyéb számítási feladatai nem járulnak hozzá jelentősen a helyhasználathoz tempdb a szkriptek végrehajtása során.

Rögzített korlát beállítása a default számítási feladatcsoporthoz

Ez a példa rögzített korlátra korlátozza a számítási feladatcsoportban lévő tempdb kérések (lekérdezések) teljes default területfelhasználását.

  1. Módosítsa a default számítási feladatcsoportot úgy, hogy a helyhasználatra vonatkozó rögzített 20 GB-os korlátot konfiguráljon tempdb .

    ALTER WORKLOAD GROUP [default]
    WITH (GROUP_MAX_TEMPDB_DATA_MB = 20480);
    
  2. Engedélyezze az erőforrás-vezérlőt az aktuális konfiguráció hatékonyabbá tétele érdekében.

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  3. Tekintse meg a térhasználat korlátait tempdb .

    SELECT group_id,
           name,
           group_max_tempdb_data_mb,
           group_max_tempdb_data_percent
    FROM sys.resource_governor_workload_groups
    WHERE name = 'default';
    
  4. Ellenőrizze a számítási feladatcsoport aktuális tempdbdefault területfelhasználását, adjon hozzá adatokat tempdb egy ideiglenes táblázat létrehozásával és egy sor beszúrásával, majd ellenőrizze újra a térhasználatot a növekedés megtekintéséhez.

    SELECT group_id,
           name,
           tempdb_data_space_kb
    FROM sys.dm_resource_governor_workload_groups
    WHERE name = 'default';
    
    SELECT REPLICATE('A', 1000) AS c
    INTO #t;
    
    SELECT group_id,
           name,
           tempdb_data_space_kb
    FROM sys.dm_resource_governor_workload_groups
    WHERE name = 'default';
    
  5. Ha szeretné, távolítsa el a default csoport korlátait, és tiltsa le az erőforrás-vezérlőt, hogy a tempdb visszaálljon a felügyelet nélküli területfelhasználásra.

    ALTER WORKLOAD GROUP [default]
    WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL, GROUP_MAX_TEMPDB_DATA_PERCENT = NULL);
    
    ALTER RESOURCE GOVERNOR DISABLE;
    

Százalékos korlát beállítása a default számítási feladatcsoporthoz

Ez a példa úgy konfigurálja az adatfájlokattempdb, hogy a százalékos korlát használható legyen, majd a számítási feladatcsoportban tempdb lévő kérések (lekérdezések) által felhasznált teljes default területmennyiséget százalékos korlátra korlátozza.

  1. Állítsa be a FILEGROWTH és MAXSIZE az összes tempdb adatfájlt úgy, hogy megfeleljenek a követelményeknek, és korlátozza a tempdb maximális méretét 1 GB-ra.

    Ez a példa azt feltételezi, hogy tempdb négy adatfájllal rendelkezik. Előfordulhat, hogy módosítania kell a szkriptet, ha a tempdb konfiguráció eltérő számú fájlt használ, vagy ha a fájl logikai neve eltérő. Előfordulhat, hogy újra kell indítania az SQL Server-példányt, vagy csökkentenie kell a tempdb használatot, ha a "tempdb" adatbázisban a MODIFY FILE nem sikerült, és megjelenik a 5040-as hiba:... A fájl mérete... nagyobb, mint a MAXSIZE ... a szkript futtatásakor.

    ALTER DATABASE tempdb MODIFY FILE (NAME = N'tempdev', FILEGROWTH = 64 MB, MAXSIZE = 256 MB);
    ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp2', FILEGROWTH = 64 MB, MAXSIZE = 256 MB);
    ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp3', FILEGROWTH = 64 MB, MAXSIZE = 256 MB);
    ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp4', FILEGROWTH = 64 MB, MAXSIZE = 256 MB);
    
  2. Módosítsa a default számítási feladatcsoportot úgy, hogy öt százalékos korlátot állítson be a tempdb helyhasználatra vonatkozóan. 1 GB tempdb maximális méret korlátjával a default csoport körülbelül 51 MB tempdb területre korlátozódik.

    ALTER WORKLOAD GROUP [default]
    WITH (GROUP_MAX_TEMPDB_DATA_PERCENT = 5);
    
  3. Ha rögzített korlát van beállítva, távolítsa el, hogy ne bírálja felül a százalékos korlátot.

    ALTER WORKLOAD GROUP [default]
    WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL);
    
  4. Engedélyezze az erőforrás-vezérlőt a konfiguráció hatékonyabbá tétele érdekében.

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  5. Tekintse meg a térhasználat korlátait tempdb .

    SELECT group_id,
           name,
           group_max_tempdb_data_mb,
           group_max_tempdb_data_percent
    FROM sys.resource_governor_workload_groups
    WHERE name = 'default';
    
  6. Adjon hozzá adatokat tempdb a korlát elérése érdekében.

    SELECT *
    INTO #m
    FROM sys.messages;
    

    Az utasítás 1138-as hibával megszakadt.

  7. Ellenőrizze a munkaterhelési csoport statisztikáit tempdb.

    SELECT group_id,
           name,
           tempdb_data_space_kb,
           peak_tempdb_data_space_kb,
           total_tempdb_data_limit_violation_count
    FROM sys.dm_resource_governor_workload_groups
    WHERE name = 'default';
    

    Az oszlopban lévő total_tempdb_data_limit_violation_count érték 1-zel növekszik, és azt mutatja, hogy a számítási feladatcsoport egyik kérése megszakadt, mert a default helyhasználatát tempdb az erőforrás-vezérlő korlátozta.

  8. Ha szeretné, távolítsa el a default csoport korlátait, és tiltsa le az erőforrás-vezérlőt, hogy a tempdb visszaálljon a felügyelet nélküli területfelhasználásra.

    ALTER WORKLOAD GROUP [default]
    WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL, GROUP_MAX_TEMPDB_DATA_PERCENT = NULL);
    
    ALTER RESOURCE GOVERNOR DISABLE;
    
  9. Ha szeretné, visszaállíthatja a tempdb példában korábban végrehajtott adatfájl-konfigurációs módosításokat.

Rögzített korlát beállítása egy felhasználó által definiált számítási feladatcsoporthoz

Ez a példa létrehoz egy új számítási feladatcsoportot, majd létrehoz egy osztályozó függvényt, amely egy adott alkalmazásnévvel rendelkező munkameneteket rendel ehhez a számítási feladatcsoporthoz.

Ebben a példában a számítási feladatcsoport helyfelhasználásának rögzített korlátja tempdb kis, 1 MB-os értékre van beállítva. A példa ezután azt mutatja, hogy a korlátot meghaladó terület lefoglalására tempdb tett kísérlet megszakadt.

  1. Hozzon létre egy számítási feladatcsoportot, és korlátozza a területfelhasználást tempdb 1 MB-ra.

    CREATE WORKLOAD GROUP limited_tempdb_space_group
    WITH (GROUP_MAX_TEMPDB_DATA_MB = 1);
    
  2. Hozza létre az osztályozó függvényt az master adatbázisban. Az osztályozó a beépített APP_NAME függvénnyel határozza meg az ügyfélkapcsolati sztringben megadott alkalmazásnevet. Ha az alkalmazás neve be van állítva limited_tempdb_application, a függvény a használni kívánt számítási feladatcsoport neveként tér vissza limited_tempdb_space_group . Ellenkező esetben a függvény default a számítási feladatcsoport neveként adja vissza.

    USE master;
    GO
    
    CREATE FUNCTION dbo.rg_classifier()
    RETURNS sysname
    WITH SCHEMABINDING
    AS
    BEGIN
    
    DECLARE @WorkloadGroupName sysname = N'default';
    
    IF APP_NAME() = N'limited_tempdb_application'
        SELECT @WorkloadGroupName = N'limited_tempdb_space_group';
    
    RETURN @WorkloadGroupName;
    
    END;
    GO
    
  3. Módosítsa az erőforrás-vezérlőt az osztályozó függvény használatára, és konfigurálja újra az erőforrás-vezérlőt az új konfiguráció használatára.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
  4. Nyisson meg egy új munkamenetet, amely a limited_tempdb_space_group számítási feladatcsoportba van besorolva.

    1. Az SQL Server Management Studióban (SSMS) válassza Fájl a főmenüben, Új, Adatbázismotor-lekérdezés.

    2. A Csatlakozás az adatbázismotorhoz párbeszédpanelen adja meg ugyanazt az adatbázismotor-példányt, ahol a számítási feladatcsoportot és az osztályozó függvényt az előző lépésekben létrehozta.

      Válassza a További kapcsolati paraméterek fület, majd írja be a App=limited_tempdb_application-t. Amikor az SSMS csatlakozik a példányhoz, limited_tempdb_application-t használ az alkalmazásnévként. Az APP_NAME() osztályozó függvény ezt az értéket is visszaadja.

    3. Új munkamenet megnyitásához válassza a Csatlakozás lehetőséget.

  5. Hajtsa végre az alábbi utasítást az előző lépésben megnyitott lekérdezési ablakban. A kimenetnek azt kell mutatnia, hogy a munkamenet a limited_tempdb_space_group számítási feladatcsoportba van besorolva.

    SELECT wg.name AS workload_group_name
    FROM sys.dm_exec_sessions AS s
    INNER JOIN sys.dm_resource_governor_workload_groups AS wg
    ON s.group_id = wg.group_id
    WHERE s.session_id = @@SPID;
    
  6. Hajtsa végre a következő utasítást ugyanabban a lekérdezési ablakban.

    SELECT REPLICATE('S', 100) AS c
    INTO #t1;
    

    A kijelentés sikeresen befejeződött. Hajtsa végre a következő utasítást ugyanabban a lekérdezési ablakban:

    SELECT REPLICATE(CAST ('F' AS NVARCHAR (MAX)), 1000000) AS c
    INTO #t2;
    

    Az utasítást az 1138-es hiba megszakítja, mert megkísérli túllépni a számítási feladatcsoport 1 MB-os tempdb tárhelyhasználati korlátját.

  7. Tekintse meg a számítási feladatcsoport aktuális és csúcsterület-felhasználását tempdblimited_tempdb_space_group .

    SELECT group_id,
           name,
           tempdb_data_space_kb,
           peak_tempdb_data_space_kb,
           total_tempdb_data_limit_violation_count
    FROM sys.dm_resource_governor_workload_groups
    WHERE name = 'limited_tempdb_space_group';
    

    Az oszlop értéke 1, amely azt mutatja, hogy ebben a total_tempdb_data_limit_violation_count számítási feladatcsoportban egy kérés megszakadt, mert az erőforrás-vezérlő korlátozta a helyhasználatot tempdb .

  8. Ha vissza szeretne térni a példa kezdeti konfigurációjára, bontsa le az összes munkamenetet a limited_tempdb_space_group számítási feladatcsoport használatával, és hajtsa végre a következő T-SQL-szkriptet:

    /* 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 limited_tempdb_space_group;
    
    /* 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;
    

    Mivel az SSMS megtartja a kapcsolati paramétereket a További kapcsolati paraméterek lapon, mindenképpen távolítsa el a App paramétert, amikor legközelebb ugyanahhoz az adatbázismotor-példányhoz csatlakozik. Így elkerülhető, hogy a kapcsolatok a számítási feladatcsoportba limited_tempdb_space_group legyenek besorolva, ha léteznek.