Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x) a novější verze
Když povolíte správu prostředků prostoru pomocí tempdb, zlepšíte spolehlivost a vyhnete se výpadkům tím, že zabráníte nežádoucím dotazům nebo úlohám, aby spotřebovávaly velké množství místa v rámci tempdb.
Počínaje SQL Serverem 2025 (17.x) můžete pomocí správce prostředků vynutit omezení celkového množství tempdb místa spotřebovaného skupinou úloh. Skupinu úloh lze přidružit k aplikaci, uživateli, skupině uživatelů atd. Když se požadavek (dotaz) pokusí překročit limit, správce prostředků ho přeruší s odlišnou chybou, která značí, že se vynutil limit skupiny úloh.
V podstatě můžete sdílený prostor tempdb rozdělit mezi různé úlohy. Můžete například nastavit vyšší limit pro skupinu úloh používanou kritickou aplikací a nastavit nižší limit pro default skupinu úloh používanou všemi ostatními úlohami.
Podrobné příklady konfigurace najdete v příručce: Příklady konfigurace správy prostředků pro prostor tempdb.
Začínáme s správcem prostředků
Správce prostředků poskytuje flexibilní architekturu pro nastavení různých tempdb limitů prostoru pro různé aplikace, uživatele, skupiny uživatelů atd. Omezení můžete nastavit také na základě vlastní logiky.
Pokud s správcem prostředků v SQL Serveru začínáte, přečtěte si správce prostředků a seznamte se s jeho koncepty a možnostmi.
Návod a osvědčené postupy pro konfiguraci správce prostředků najdete v kurzu: Příklady konfigurace správce prostředků a osvědčené postupy.
Nastavení limitů pro spotřebu místa v databázi tempdb
Spotřebu místa můžete omezit tempdb skupinou úloh jedním ze dvou způsobů:
Nastavte pevný limit pomocí argumentu
GROUP_MAX_TEMPDB_DATA_MB.Pevný limit je užitečný v případě, že požadavky na využití úloh
tempdbjsou známé předem nebo kdyžtempdbse velikost nezmění.Nastavte procentuální limit pomocí argumentu
GROUP_MAX_TEMPDB_DATA_PERCENT.Limit v procentech je užitečný, když můžete v průběhu času změnit maximální velikost
tempdba chcetetempdb, aby se prostor dostupný pro každou skupinu úloh přiměřeně změnil bez rekonfigurace správce prostředků. Pokud například vertikálně navýšíte kapacitu virtuálního počítače Azure s SQL Serverem a zvýšíte maximálnítempdbvelikost, zvýší setempdbtaké prostor dostupný pro každou skupinu úloh s procentuálním limitem.
Další informace o argumentech GROUP_MAX_TEMPDB_DATA_MB a GROUP_MAX_TEMPDB_DATA_PERCENT naleznete v kapitolách CREATE WORKLOAD GROUP nebo ALTER WORKLOAD GROUP.
Pokud jsou pro stejnou skupinu úloh zadány pevné i procentuální limity, má pevný limit přednost před limitem procenta.
V dané instanci SQL Serveru můžete mít kombinaci skupin úloh s pevnými limity, procentními limity nebo bez omezení tempdb užití místa.
Nastavení procentuálního limitu
Omezení procent platí jenom v případech, kdy konfigurace datového tempdb souboru splňuje požadavky shrnuté v následující tabulce:
| Konfigurace | Popis | Maximální velikost databáze Tempdb (100%) | Procentuální limit v platnosti |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB není nastavená- Pro všechny datové soubory MAXSIZE neplatí UNLIMITED- Pro všechny datové soubory není FILEGROWTH nulové. |
tempdb datové soubory se můžou automaticky zvětšovat až do maximální velikosti. |
Součet MAXSIZE hodnot pro všechny datové soubory |
Ano |
-
GROUP_MAX_TEMPDB_DATA_MB není nastavená- Pro všechny datové soubory je MAXSIZEUNLIMITED- Pro všechny datové soubory FILEGROWTH je nula. |
tempdb datové soubory jsou předem přerostlé podle jejich zamýšlených velikostí a nemůžou se dále rozšiřovat. |
Součet SIZE hodnot pro všechny datové soubory |
Ano |
| Všechny ostatní konfigurace | Ne |
Následující dotaz vám umožní zobrazit aktuální tempdb konfiguraci datového souboru:
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';
Pro daný soubor v sadě výsledků:
- Pokud je
maxsize_mbsloupecNULL, pakMAXSIZEjeUNLIMITED. - Pokud je buď
filegrowth_mbnebofilegrowth_percentnula, pakFILEGROWTHje nula.
Pokud nastavíte GROUP_MAX_TEMPDB_DATA_PERCENT a spustíte příkaz ALTER RESOURCE GOVERNOR RECONFIGURE , ale konfigurace datového souboru nesplňuje požadavky, příkaz se úspěšně dokončí a limity procent se uloží, ale nevynucují se. V tomto případě se zobrazí zpráva s upozorněním 10989, závažnost 10, GROUP_MAX_TEMPDB_DATA_PERCENT není platná, protože nejsou splněny požadavky na konfiguraci databáze tempdb. Zpráva se také zaprotokoluje v protokolu chyb.
Aby byly limity procent efektivní, překonfigurujte tempdb datové soubory tak, aby splňovaly požadavky, a spusťte ALTER RESOURCE GOVERNOR RECONFIGURE to znovu. Pro více informací ohledně konfigurace SIZE, FILEGROWTH a MAXSIZE viz Možnosti souboru a skupiny souborů ALTER DATABASE.
Poznámka:
Pro novou instanci SQL Serveru je datový soubor MAXSIZEUNLIMITED a FILEGROWTH je větší než nula, což znamená, že procentuální limity nejsou účinné. Pokud chcete použít procentuální limity, musíte:
- Připravte
tempdbdatové soubory do zamýšlených velikostí a nastavteFILEGROWTHna nulu. - Nastavte
MAXSIZEkaždého datového souboru na omezenou hodnotu.Pro každý
tempdbsvazek datového souboru se ujistěte, že součetMAXSIZEhodnot souborů na svazku je menší nebo roven dostupnému místu na disku na svazku.Pokud má například svazek 100 GB volného místa a má dva
tempdbdatové soubory, udělejteMAXSIZEz každého souboru 50 GB nebo méně.
Pokud je v platnosti limit procenta a vy přidáte, odeberete nebo změníte velikost tempdb datových souborů, musíte provést ALTER RESOURCE GOVERNOR RECONFIGURE pro aktualizaci správce prostředků na novou maximální velikost tempdb (100%).
Jak to funguje
Tato část podrobně tempdb popisuje zásady správného řízení prostředků prostoru.
Když jsou datové stránky
tempdbpřidělovány a uvolňovány, správce prostředků udržuje evidencitempdbprostoru spotřebovaného každou skupinou úloh.Pokud je povolený správce prostředků a
tempdbpro skupinu úloh je nastavený limit spotřeby místa a požadavek (dotaz) spuštěný ve skupině úloh se pokusí přenést celkovoutempdbspotřebu místa skupinou nad limit, požadavek se přeruší s chybou 1138, závažností 17, nepodařilo se přidělit novou stránku databáze tempdb, protože by překročil limit nastavený pro skupinu úloh název skupiny úloh.Pokud je požadavek přerušen chybou 1138, hodnota ve
total_tempdb_data_limit_violation_countsloupci zobrazení dynamické správy sys.dm_resource_governor_workload_groups se zvýší o jednu, takže dojde k aktivacitempdb_data_workload_group_limit_reachedrozšířené události.Správce prostředků sleduje veškeré
tempdbvyužití, které lze přiřadit skupině úloh, včetně dočasných tabulek, proměnných (včetně proměnných tabulek), parametrů hodnot tabulky, trvalých tabulek, kurzorů atempdbvyužití během zpracování dotazů, jako jsou dočasné úložiště, přesypy, pracovní tabulky a pracovní soubory.Spotřeba místa pro globální dočasné tabulky a trvalé tabulky se
tempdbzapočítá do skupiny úloh, která vloží první řádek do tabulky, i když sezení v jiných skupinách úloh přidávají, upravují nebo odebírají řádky ve stejné tabulce.Nakonfigurované
tempdblimity spotřeby pro každou skupinu úloh jsou zveřejněny v katalogovém zobrazení sys.resource_governor_workload_groups, ve sloupcíchgroup_max_tempdb_data_mbagroup_max_tempdb_data_percent.Aktuální spotřeba a maximální spotřeba
tempdbmísta ve skupině úloh jsou dostupné v zobrazení dynamické správy sys.dm_resource_governor_workload_groups, ve sloupcitempdb_data_space_kba ve sloupcipeak_tempdb_data_space_kb.Návod
tempdb_data_space_kbapeak_tempdb_data_space_kbsloupce v sys.dm_resource_governor_workload_groups jsou zachovány, i pokud nejsou nastavena žádná omezení spotřeby místatempdb.Funkci klasifikátoru a skupiny úloh můžete vytvořit bez počátečního nastavení limitů. Sledujte
tempdbvyužití podle jednotlivých skupin v průběhu času, abyste vytvořili reprezentativní vzory využití, a pak podle potřeby nastavte limity.Tempdbpoužití úložišť verzí včetně trvalého úložiště verzí (PVS) není regulováno, pokud je vetempdbpovolené, protože verze řádků můžou být používány požadavky ve více skupinách úloh.Spotřeba místa ve
tempdbse počítá jako počet použitých datových stránek 8-KB. I když stránka není plně vyplněná daty, přidá ke spotřebě 8 kB skupinou úlohtempdb.Tempdbsledování využití prostoru se udržuje po celou dobu existence skupiny úloh. Pokud dojde k vyřazení skupiny úloh, zatímco globální dočasné tabulky nebo netemporární tabulky, k nimž se data účetně vztahují k této skupině úloh, zůstanou vtempdb, prostor využívaný těmito tabulkami není účetně přiřazen žádné jiné skupině úloh.TempdbZásady správného řízení prostředků prostoru řídí místo vtempdbdatových souborech, ale ne místo na disku na podkladových svazcích. Pokud předem nepřipravítetempdbdatové soubory na jejich zamýšlené velikosti, může být místo na svazku, kde setempdbnalézají, spotřebováno jinými soubory. Pokud pro datové soubory nezbývá žádné volné místotempdb, může dojít k výpadku místa protempdbpřed dosažením limitu využití prostoru u jakékoli skupiny úlohtempdb.Zásady správného řízení prostředků prostoru platí
tempdbpro datové soubory, ale ne pro soubor transakčního protokolu. Aby transakční protokoltempdbnevyužíval velké množství místa, povolte ADR vtempdb.
Rozdíly ve sledování prostoru na úrovni relace
Dynamické zobrazení sys.dm_db_session_space_usage poskytuje tempdb statistiky přidělování a uvolňování prostoru pro každou relaci. Přestože existuje ve skupině úloh pouze jedna relace, statistiky o využití prostoru poskytované tímto DMV nemusí přesně odpovídat statistikám uvedeným v zobrazení sys.dm_resource_governor_workload_groups z následujících důvodů:
- Na rozdíl od
sys.dm_resource_governor_workload_groups:sys.dm_db_session_space_usage- Neodráží
tempdbvyužití místa aktuálně spuštěnými úlohami. Statistiky sesys.dm_db_session_space_usageaktualizují po dokončení úkolu. Statistiky sesys.dm_resource_governor_workload_groupsprůběžně aktualizují. - Nesleduje stránky mapy přidělování indexů (IAM). Další informace najdete v Příručce architektury stránek a rozsahů.
- Neodráží
- Po odstranění řádků nebo při odstranění či zkrácení tabulky, indexu nebo oddílu mohou být datové stránky uvolněny asynchronním procesem běžícím na pozadí. K tomuto zrušení stránky může dojít se zpožděním.
sys.dm_resource_governor_workload_groupsodráží tyto dealokace stránky, jak k nim dochází, i když relace, která způsobila tyto dealokace, byla uzavřena a již není přítomnasys.dm_db_session_space_usage.
Osvědčené postupy pro správu zdrojů databázového prostoru tempdb
Před konfigurací tempdb zásad správného řízení prostředků prostoru zvažte následující osvědčené postupy:
Projděte si obecné osvědčené postupy pro správce prostředků.
Ve většině scénářů se vyhněte nastavení limitu
tempdbspotřeby místa na malou nebo nulovou hodnotu, zejména prodefaultskupinu úloh. Pokud to uděláte, může mnoho běžných úloh začít selhávat, pokud potřebují přidělit místo vtempdb. Pokud například nastavíte pevný nebo procentuální limit na 0 prodefaultskupinu úloh, možná nebudete moct otevřít Průzkumníka objektů v sadě SQL Server Management Studio (SSMS).Pokud jste nevytvořili vlastní skupiny úloh a funkci klasifikátoru, která umístí úlohy do jejich vyhrazených skupin, vyhněte se omezení
tempdbvyužitídefaultskupinou úloh. To může přerušit dotazy s chybou 1138, pokudtempdbstále nemá nevyužité místo, které nemůže využívat žádná uživatelská úloha.Je povoleno, aby součet
GROUP_MAX_TEMPDB_DATA_MBhodnot pro všechny skupiny úloh překročil maximálnítempdbvelikost. Pokud je například maximálnítempdbvelikost 100 GB,GROUP_MAX_TEMPDB_DATA_MBomezení pro skupinu úloh A a skupinu úloh B můžou být 80 GB.Tento přístup stále brání tomu, aby každá skupina úloh zabíjela veškerý prostor
tempdbtak, že ponechá 20 GB pro ostatní skupiny úloh. Současně se vyhnete zbytečným přerušením dotazů, pokud je stále k dispozici volnétempdbmísto, protože skupiny úloh A a B pravděpodobně nebudou současně spotřebovávat velké množstvítempdbmísta.Podobně může součet
GROUP_MAX_TEMPDB_DATA_PERCENThodnot pro všechny skupiny úloh překročit 100 procent. Pokud víte, že je nepravděpodobné, že by více skupin současně způsobilo vysokétempdbvyužití, můžete každé skupině přidělit vícetempdbmísta.
Související obsah
- Návod: Příklady konfigurace správy prostředků prostoru tempdb
- Správce prostředků
- Kurz : Příklady konfigurace správce prostředků a osvědčené postupy
- ALTER RESOURCE GOVERNOR
- VYTVOŘENÍ skupiny úloh
- ZMĚNIT SKUPINU ZÁTĚŽE
- SKUPINA PRACOVNÍ ZÁTĚŽE
- sys.resource_governor_workload_groups
- sys.dm_resource_governor_workload_groups