Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x) és újabb verziók
Ha engedélyezi tempdb a helyerőforrás-szabályozást, javíthatja a megbízhatóságot, és elkerülheti a kimaradásokat azáltal, hogy megakadályozza, hogy az elszabadult lekérdezések vagy számítási feladatok nagy mennyiségű helyet foglalhassanak el.tempdb
A 2025-ös (17.x) SQL Server kezdve az erőforrás-vezérlővel korlátozhatja a számítási feladatcsoport által felhasznált teljes területettempdb. Amikor egy kérés (lekérdezés) megkísérli túllépni a korlátot, az erőforrás-vezérlő egy külön hibával megszakítja azt, amely azt jelzi, hogy a számítási feladatcsoport korlátja kényszerítve van.
A megosztott tempdb területet gyakorlatilag particionálásra használhatja a különböző számítási feladatok között. Beállíthatja például egy kritikus fontosságú alkalmazás által használt számítási feladatcsoportra vonatkozó magasabb korlátot, és alacsonyabb korlátot állíthat be az default összes többi számítási feladat által használt számítási feladatcsoportra vonatkozóan.
Részletes konfigurációs példákért lásd az oktatóanyagot: Példák a tempdb térerőforrás-szabályozás konfigurálására.
Ismerkedés az erőforrás-kormányzóval
Az Erőforrás-vezérlő rugalmas keretrendszert biztosít a különböző alkalmazások, felhasználók, felhasználói csoportok stb. különböző tempdb helykorlátainak beállításához. Egyéni logika alapján is beállíthat korlátokat.
Ha még nem ismerkedik az erőforrás-kormányzóval a SQL Server, az erőforrás-kormányzóban megismerheti annak fogalmait és képességeit.
Az erőforrás-kormányzó konfigurációs útmutatóját és ajánlott eljárásait az oktatóanyagban találja: Az erőforrás-vezérlő konfigurációs példái és ajánlott eljárásai.
A tempdb-helyhasználat korlátainak beállítása
Egy számítási feladatcsoport a térhasználatot kétféleképpen korlátozhatja tempdb :
Állítsa be a rögzített korlátot az
GROUP_MAX_TEMPDB_DATA_MBargumentum használatával.A rögzített korlátot akkor használja, ha előre ismeri a számítási feladatok
tempdbhasználati követelményeit, vagy ha atempdbméret nem változik.Állítsa be a százalékos korlátot az
GROUP_MAX_TEMPDB_DATA_PERCENTargumentum használatával.Használja a százalékos korlátot, ha az idő múlásával módosíthatja a maximális méretet, és azt szeretné, hogy az
tempdbegyes számítási feladatok csoportjai számára rendelkezésre álló terület arányosan változzon a számítási feladatcsoport konfigurációjánaktempdbmódosítása nélkül. Ha például felskáláz egy SQL Servert futtató Azure-beli virtuális gépet, és növeli a maximálistempdbméretet, akkor aztempdbegyes számítási feladatokhoz rendelkezésre álló, százalékos korláttal rendelkező terület is nő.
A(z) GROUP_MAX_TEMPDB_DATA_MB és GROUP_MAX_TEMPDB_DATA_PERCENT argumentummal kapcsolatos további információkért lásd: CREATE WORKLOAD GROUP vagy ALTER WORKLOAD GROUP.
Ha ugyanahhoz a számítási feladatcsoporthoz rögzített és százalékos korlátot is megad, a rögzített korlát elsőbbséget élvez a százalékos korlátkal szemben.
Egy adott SQL Server-példányon több számítási feladatcsoportot is használhat rögzített korlátozásokkal, százalékkorlátokkal vagy a helyhasználat korlátozása tempdb nélkül. Az érvényes korlátok megtekintéséhez tekintse meg az érvényes tempdb-helykorlátok megtekintése számítási feladatcsoportonkénti példát.
Százalékos korlát beállítása
Az utasítás futtatásakor a ALTER RESOURCE GOVERNOR RECONFIGURE százalékkorlátok az alábbi táblázat szerint lépnek érvénybe:
| Konfiguráció | Leírás | Tempdb maximális mérete (100%) | Érvényben lévő százalékos korlát |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB nincs beállítva- Az összes adatfájl esetében MAXSIZE nem UNLIMITED- Minden adatfájl esetében a(z) FILEGROWTH nem nulla |
tempdb az adatfájlok a maximális méretükig automatikusan megnőhetnek |
Az összes adatfájl értékeinek összege MAXSIZE |
Igen |
-
GROUP_MAX_TEMPDB_DATA_MB nincs beállítva- Az összes adatfájl MAXSIZE esetében a UNLIMITED- Az összes adatfájl FILEGROWTH értéke nulla. |
tempdb az adatfájlok előre be vannak telepítve a kívánt méretükbe, és nem növekedhetnek tovább |
Az összes adatfájl értékeinek összege SIZE |
Igen |
| Minden más konfiguráció | Nem |
A tempdb konfiguráció megtekintéséhez tekintse meg a Tempdb-adatfájl konfigurációs példáját.
Százalékkorlátok használata esetén vegye figyelembe a következőket:
Ha beállítja
GROUP_MAX_TEMPDB_DATA_PERCENTés végrehajtja a ALTER RESOURCE GOVERNOR RECONFIGURE utasítást, de az adatfájl konfigurációja nem felel meg a követelményeknek, az utasítás sikeresen befejeződik, és a százalékos korlátokat a rendszer tárolja, de nem kényszeríti őket. Ebben az esetben az 10989-10 súlyosságú figyelmeztető üzenet jelenik meg, amelyet a hibanapló is naplóz:GROUP_MAX_TEMPDB_DATA_PERCENT is not in effect because tempdb configuration requirements aren't met.A százalékkorlátok hatékonyságának érdekében konfigurálja
tempdbújra az adatfájlokat a követelményeknek való megfeleléshez, majd hajtsa végreALTER RESOURCE GOVERNOR RECONFIGUREújra. További információ a fájl- ésSIZEMAXSIZEkonfigurálásárólALTER DATABASE.Ha a százalékos korlát érvényben van, és adatfájlokat ad hozzá, távolít el vagy méretez
tempdbát, akkor végre kell hajtaniaALTER RESOURCE GOVERNOR RECONFIGUREaz erőforrás-vezérlő frissítéséttempdbaz új maximális mérettel (100%).
Megjegyzés:
Új SQL Server-példány esetén a(z) MAXSIZE adatfájl értéke UNLIMITED, és a(z) FILEGROWTH értéke nagyobb nullánál, ami azt jelenti, hogy a százalékos korlátok nem érvényesülnek. A százalékkorlátok használatához a következőkre van szükség:
-
tempdbÁllítsa be az adatfájlokat a kívánt méretre, és állítsaFILEGROWTHnulla értékre. - Állítsa az
MAXSIZEegyes adatfájlok értékét korlátozott értékre. - Minden adatfájl-kötet
tempdbesetében győződjön meg arról, hogy a köteten lévő fájlok értékeinek összegeMAXSIZEkisebb vagy egyenlő a köteten rendelkezésre álló lemezterületnél. Ha például egy kötet 100 GB szabad területtel rendelkezik, és kéttempdbadatfájllal rendelkezik, azMAXSIZEegyes fájlok mérete 50 GB vagy kevesebb.
Hogyan működik?
Ez a szakasz részletesen ismerteti tempdb a térerőforrás-szabályozást.
Mivel az adatoldalak
tempdbki vannak foglalva és felszabadítva vannak, az erőforrás-kormányzó megtartja aztempdbegyes számítási feladatok csoportjai által felhasznált terület könyvelését.Ha az erőforrás-vezérlő engedélyezve van, és
tempdbegy számítási feladatcsoport számára helyhasználati korlát van beállítva, és a számítási feladatcsoportban futó kérés (lekérdezés) megpróbálja a csoport által a korlát fölé állítani a teljestempdbterületfelhasználást, a kérést 1138-ás, 17-s súlyosságú hiba szakítja meg:Could not allocate a new page for database 'tempdb' because that would exceed the limit set for workload group 'workload-group-name'".Ha egy kérést 1138-os hibával szakít meg, a
total_tempdb_data_limit_violation_countdinamikus felügyeleti nézet (DMV) oszlopában lévő érték eggyel növekszik, és atempdb_data_workload_group_limit_reachedkiterjesztett esemény aktiválódik.Az erőforrás-vezérlő nyomon követi a számítási feladatcsoporthoz rendelhető összes
tempdbhasználatot, beleértve az ideiglenes táblákat, a változókat (beleértve a táblaváltozókat), a táblaértékkel rendelkező paramétereket, a nem ideiglenes táblákat, a kurzorokat éstempdba lekérdezésfeldolgozás során történő használatot, például az adatsorokat, a kiömléseket, a munkatáblákat és a munkafájlokat.A globális ideiglenes táblák és a nem ideiglenes táblák
tempdbhelyfelhasználását az első sort a táblázatba beszúró számítási feladatcsoport veszi figyelembe, még akkor is, ha a többi számítási feladatcsoport munkamenetei ugyanahhoz a táblához adnak hozzá, módosítanak vagy távolítanak el sorokat.Az egyes számítási feladatcsoportokra vonatkozó konfigurált
tempdbhasználati korlátok a sys.resource_governor_workload_groups katalógusnézetben, agroup_max_tempdb_data_mbésgroup_max_tempdb_data_percentoszlopokban jelennek meg.A számítási feladatcsoport aktuális kihasználtsága és maximális kihasználtsága
tempdba sys.dm_resource_governor_workload_groups DMV-ben, illetve aztempdb_data_space_kbpeak_tempdb_data_space_kboszlopokban jelenik meg.Jótanács
tempdb_data_space_kbéspeak_tempdb_data_space_kba sys.dm_resource_governor_workload_groups oszlopai akkor is megmaradnak, ha nincs korlátozva atempdbtérhasználat.Az osztályozófüggvényeket és a számítási feladatcsoportokat kezdetben korlátok megadása nélkül is létrehozhatja. Kövesse nyomon minden csoport
tempdbhasználatát az idők során a reprezentatív használati minták meghatározásához, majd szükség szerint állítson be korlátokat.tempdbA verziótárolók általi használat, beleértve az állandó verziótárat (PVS) is, ha a gyorsított adatbázis-helyreállítás (ADR) engedélyezvetempdbvan, nem vonatkozik rá, mert a sorverziókat több számítási feladatcsoport kérései használhatják.A
tempdbhelyhasználat a felhasznált 8 KB-os adatlapok számával van elszámolva. Még akkor is 8 KB-t ad hozzá atempdbfelhasználáshoz egy munkaterhelési csoport, ha egy lap nincs teljesen kitöltve adatokkal.tempdba rendszer a számítási feladatcsoport teljes élettartama alatt fenntartja a térbeli könyvelést. Ha egy számítási feladatcsoport fel lesz szüntetve, miközben a globális ideiglenes táblák vagy az ehhez a számítási feladatcsoporthoz kapcsolódó nem ideiglenes táblák maradnaktempdb, a táblák által használt terület más számítási feladatcsoporthoz nem kerül elszámolásra.tempdbA térerőforrás-szabályozás az adatfájlokban lévőtempdbhelyet vezérli, a mögöttes köteteken lévő lemezterületet azonban nem. Ha nem növeli meg előre a(z)tempdbadatfájlokat a tervezett méretükre, akkor azokon a köteteken, ahol a(z)tempdbtalálható, a tárhelyet más fájlok foglalhatják el. Ha nincs szabad hely az adatfájlok növekedéséheztempdb, akkortempdbelőfordulhat, hogy elfogy a szabad terület, mielőtt elérné a számítási feladatcsoport térhasználatitempdbkorlátját.A térerőforrás-szabályozás az
tempdbadatfájlokra vonatkozik, a tranzakciónapló-fájlra nem. Annak érdekében, hogy a tranzakciós bejelentkezéstempdbne használjon fel nagy mennyiségű helyet, engedélyezze az ADR-t.tempdb
Különbségek a munkamenetszintű térkövetésben
A sys.dm_db_session_space_usage DMV minden munkamenethez helyfoglalási és felszabadítási statisztikákat biztosít tempdb . Még ha csak egy munkamenet is van egy számítási feladatcsoportban, előfordulhat, hogy a DMV helyhasználati statisztikái nem felelnek meg pontosan az sys.dm_resource_governor_workload_groups nézet statisztikáinak, az alábbi okok miatt:
- Ellentétben a következővel
sys.dm_resource_governor_workload_groupssys.dm_db_session_space_usage:- Nem tükrözi
tempdba jelenleg futó tevékenységek által használt területet. Asys.dm_db_session_space_usagestatisztikái frissülnek, amikor egy feladat befejeződik. A statisztikáksys.dm_resource_governor_workload_groupsfolyamatosan frissülnek. - Az indexfoglalási térkép (IAM) lapjait nem követi nyomon. További információkért tekintse meg az Oldal- és kiterjedésarchitektúra útmutatót.
- Nem tükrözi
- A sorok törlése, illetve egy tábla, index vagy partíció elvetése vagy csonkosítása után az adatbázismotor felszabadítja az adatoldalakat. Előfordulhat, hogy a felszabadítás szinkron, vagy aszinkron háttérfolyamattal történik.
sys.dm_resource_governor_workload_groupsezek az oldalelhelyezések akkor is megjelennek, ha a felszabadítást okozó munkamenet bezárult, és már nem szerepel a fájlbansys.dm_db_session_space_usage.
Ajánlott eljárások a tempdb space erőforrás-szabályozásához
A térerőforrás-szabályozás tempdb konfigurálása előtt vegye figyelembe az alábbi ajánlott eljárásokat:
Tekintse át az erőforráskezelő általános ajánlott eljárásait.
A legtöbb forgatókönyv esetében kerülje a
tempdbhelyhasználati korlát kis értékre vagy nullára történő beállítását, különösen adefaultszámítási feladatcsoport esetében. Ha ezt a korlátot kis értékre vagy nullára állítja be, sok gyakori feladat meghiúsulhat, ha helyet kell lefoglalniuk a rendszerbentempdb. Ha például a rögzített vagy a százalékos korlátot 0-ra állítja be a számítási feladatcsoporthoz, előfordulhat, hogy nem tudja megnyitni az Object Explorert azdefaultSQL Server Management Studióban (SSMS).Hacsak nem hoz létre egyéni számítási feladatcsoportokat és egy osztályozófüggvényt, amely a számítási feladatokat a dedikált csoportokba helyezi, kerülje a
tempdbszámítási feladatcsoport használatának korlátozásátdefault. Ha korlátozza adefaultmunkaterhelési csoporttempdbtárterület-használatát, a lekérdezések 1138-as hibát adhatnak vissza. Ez a hiba akkor fordul elő, hatempdbmég mindig nincs használatban olyan terület, amelyet egyetlen felhasználói számítási feladat sem tud felhasználni.Az összes számítási feladatcsoport értékeinek összege
GROUP_MAX_TEMPDB_DATA_MBmeghaladhatja a maximálistempdbméretet. Ha például a maximálistempdbméret 100 GB, azGROUP_MAX_TEMPDB_DATA_MBés a B számítási feladatcsoport korlátai egyenként 80 GB lehetnek.Ez a módszer továbbra is megakadályozza, hogy minden számítási feladatcsoport teljes területet
tempdbhasznál fel, ha 20 GB-ot hagy a többi számítási feladatcsoport számára. Ugyanakkor elkerülheti a szükségtelen lekérdezési megszakításokat, ha a szabadtempdbterület továbbra is rendelkezésre áll, mert az A és B számítási feladatcsoportok valószínűleg nem fognak nagy mennyiségűtempdbhelyet felhasználni egyszerre.Hasonlóképpen, az összes számítási feladatcsoport értékeinek összege
GROUP_MAX_TEMPDB_DATA_PERCENTmeghaladhatja a 100 százalékot. Ha tudja, hogy több csoport nem okoz egyszerre magastempdbkihasználtságot, többtempdbhelyet is lefoglalhat az egyes csoportok számára.
Examples
Tempdb-adatfájl konfigurációjának megtekintése
Az alábbi lekérdezés az aktuális tempdb adatfájl-konfigurációt mutatja be:
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF (max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF (is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF (is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND type_desc = 'ROWS';
Egy adott fájl esetében az eredményhalmazban:
- Ha az
maxsize_mboszlopNULL, akkorMAXSIZEUNLIMITED. - Ha vagy
filegrowth_mbfilegrowth_percentnulla, akkorFILEGROWTHnulla.
Tényleges tempdb-helykorlátok megtekintése számítási feladatcsoportonként
Az alábbi lekérdezés az egyes számítási feladatokhoz tartozó tényleges tempdb helyhasználati korlátot mutatja be. A korlátot a rendszer megabájtban adja vissza rögzített vagyszázalékos korlátkonfiguráció esetén.
Ha az group_effective_limit_mb oszlop az NULL, az alábbiak egyikét jelenti:
- Sem rögzített, sem százalékos korlát nincs konfigurálva.
- A százalékos korlát konfigurációjának használatára vonatkozó követelmények nem teljesülnek.
SELECT wg.group_id,
wg.name,
tf.tempdb_max_size_mb,
CASE
WHEN wg.group_max_tempdb_data_mb IS NOT NULL
THEN wg.group_max_tempdb_data_mb
WHEN wg.group_max_tempdb_data_percent IS NOT NULL AND tf.tempdb_max_size_mb IS NOT NULL
THEN 0.01 * wg.group_max_tempdb_data_percent * tf.tempdb_max_size_mb
ELSE NULL END AS group_effective_limit_mb
FROM sys.resource_governor_workload_groups AS wg
CROSS APPLY (
SELECT IIF (SUM(IIF (max_size <> -1
AND growth > 0, 1, 0)) = COUNT(1) /* autogrow up to the maxsize */
OR SUM(IIF (max_size = -1
AND growth = 0, 1, 0)) = COUNT(1), /* pregrown and fixed */
SUM(IIF (growth = 0, size, max_size)) * 8 / 1024., NULL) AS tempdb_max_size_mb
FROM sys.master_files
WHERE database_id = 2
AND type_desc = 'ROWS'
) AS tf;
Következő lépés
Kapcsolódó tartalom
- Erőforrás-kormányzó
- oktatóanyag: Az erőforrás-vezérlő konfigurációs példái és ajánlott eljárásai
- ALTER RESOURCE GOVERNOR (Transact-SQL)
- CREATE WORKLOAD GROUP (Transact-SQL)
- ALTER WORKLOAD GROUP (Transact-SQL)
- DROP WORKLOAD GROUP (Transact-SQL)
- sys.resource_governor_workload_groups
- sys.dm_resource_governor_workload_groups