Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) en latere versies
Wanneer u het beheer van ruimteresources inschakelt tempdb, verbetert u de betrouwbaarheid en voorkomt u storingen door te verhinderen dat ongecontroleerde query's of workloads een grote hoeveelheid ruimte in tempdb verbruiken.
Vanaf SQL Server 2025 (17.x) kunt u resource governor gebruiken om een limiet af te dwingen voor de totale hoeveelheid tempdb ruimte die door een workloadgroep wordt verbruikt. Een workloadgroep kan worden gekoppeld aan een toepassing, een gebruiker, een groep gebruikers, enzovoort. Wanneer een aanvraag (een query) de limiet probeert te overschrijden, wordt deze door resource governor afgebroken met een afzonderlijke fout die aangeeft dat de limiet van de workloadgroep is afgedwongen.
In feite kunt u de gedeelde tempdb ruimte partitioneren tussen verschillende workloads. U kunt bijvoorbeeld een hogere limiet instellen voor een workloadgroep die wordt gebruikt door een bedrijfskritieke toepassing en een lagere limiet instellen voor de default werkbelastinggroep die door alle andere workloads wordt gebruikt.
Aan de slag met resource governor
Resource Governor biedt een flexibel framework voor het instellen van verschillende tempdb ruimtelimieten voor verschillende toepassingen, gebruikers, gebruikersgroepen, enzovoort. U kunt ook limieten instellen op basis van aangepaste logica.
Als u nieuw bent met de resource governor in SQL Server, raadpleegt u resource governor om meer te leren over de concepten en mogelijkheden.
Zie Handleiding: Voorbeelden en best practices van Resource Governor-configuratie voor een stappenplan en de beste praktijken voor de configuratie van de Resource Governor.
Limieten instellen voor tempdb-ruimteverbruik
U kunt het ruimteverbruik door een workloadgroep op een van de volgende twee manieren beperken tempdb:
Stel een vaste limiet in met behulp van het
GROUP_MAX_TEMPDB_DATA_MBargument.De vaste limiet is handig wanneer de gebruiksvereisten van de workload
tempdbvooraf bekend zijn, of wanneer de groottetempdbniet verandert.Stel een procentlimiet in met behulp van het
GROUP_MAX_TEMPDB_DATA_PERCENTargument.De percentagelimiet is handig wanneer u de maximale grootte in de loop van
tempdbde tijd kunt wijzigen en u wilt dat detempdbruimte die beschikbaar is voor elke workloadgroep proportioneel wordt gewijzigd zonder resource governor opnieuw te configureren. Als u bijvoorbeeld een Azure-VM met SQL Server omhoog schaalt en de maximaletempdbgrootte verhoogt, neemt ook detempdbruimte die beschikbaar is voor elke workloadgroep met een procentlimiet toe.
Zie GROUP_MAX_TEMPDB_DATA_MB of GROUP_MAX_TEMPDB_DATA_PERCENT voor meer informatie over de en argumenten.
Als zowel vaste als procentlimieten worden opgegeven voor dezelfde werkbelastinggroep, heeft de vaste limiet voorrang op de procentlimiet.
Op een bepaald SQL Server-exemplaar kunt u een combinatie van workloadgroepen hebben met vaste limieten, percentagelimieten of geen limieten voor tempdb ruimteverbruik.
Configuratie van percentagelimiet
De percentagelimieten zijn alleen van kracht wanneer de configuratie van het tempdb gegevensbestand voldoet aan de vereisten die in de volgende tabel worden samengevat:
| Configuratie | Beschrijving | Tempdb maximale grootte (100%) | Percentagelimiet van kracht |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB is niet ingesteld- Voor alle gegevensbestanden is MAXSIZE niet UNLIMITED- Voor alle gegevensbestanden FILEGROWTH is het niet nul |
tempdb gegevensbestanden kunnen automatisch groeien tot hun maximale grootte |
De som van MAXSIZE waarden voor alle gegevensbestanden |
Ja |
-
GROUP_MAX_TEMPDB_DATA_MB is niet ingesteld- Voor alle gegevensbestanden, MAXSIZE is UNLIMITED- Voor alle gegevensbestanden FILEGROWTH is nul |
tempdb gegevensbestanden worden vooraf ingegroeid tot de beoogde grootten en kunnen niet verder groeien |
De som van SIZE waarden voor alle gegevensbestanden |
Ja |
| Alle andere configuraties | Nee. |
Met de volgende query ziet u de huidige tempdb configuratie van het gegevensbestand:
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';
Voor een bepaald bestand in de resultatenset:
- Als de
maxsize_mbkolomNULLis, dan isMAXSIZEUNLIMITED. - Wanneer een van beide
filegrowth_mboffilegrowth_percentnul is, is datFILEGROWTHnul.
Als u de GROUP_MAX_TEMPDB_DATA_PERCENT instelt en uitvoert, maar de configuratie van het gegevensbestand niet voldoet aan de vereisten, wordt de instructie voltooid en worden de procentlimieten opgeslagen, maar worden ze niet afgedwongen. In dit geval ontvangt u een waarschuwingsbericht 10989, ernst 10, GROUP_MAX_TEMPDB_DATA_PERCENT niet van kracht is omdat niet aan de tempdb-configuratievereisten wordt voldaan. Het bericht wordt ook vastgelegd in het foutenlogboek.
Als u de percentagelimieten effectief wilt maken, moet u gegevensbestanden opnieuw configureren tempdb om aan de vereisten te voldoen en opnieuw uit te voeren ALTER RESOURCE GOVERNOR RECONFIGURE . Zie SIZE voor meer informatie over het configureren van FILEGROWTH, MAXSIZE, en .
Opmerking
Voor een nieuw exemplaar van SQL Server is het gegevensbestand MAXSIZEUNLIMITED en is FILEGROWTH groter dan nul, wat betekent dat percentagelimieten niet effectief zijn. Als u percentagelimieten wilt gebruiken, moet u het volgende doen:
- Laat gegevensbestanden groeien
tempdbtot de beoogde grootten en stelFILEGROWTHin op nul. - Stel de
MAXSIZEwaarde van elk gegevensbestand in op een beperkte waarde.Zorg ervoor dat voor elk
tempdbgegevensbestandsvolume de som vanMAXSIZEwaarden voor bestanden op het volume kleiner is dan of gelijk is aan de beschikbare schijfruimte op het volume.Als een volume bijvoorbeeld 100 GB vrije ruimte heeft en twee
tempdbgegevensbestanden heeft, maakt u hetMAXSIZEvan elk bestand 50 GB of minder.
Als een percentagelimiet van kracht is en u gegevensbestanden toevoegt, verwijdert of het formaat tempdb ervan wijzigt, moet u resource ALTER RESOURCE GOVERNOR RECONFIGURE governor bijwerken met de nieuwe maximale grootte ( tempdb 100%).
Hoe het werkt
In deze sectie wordt het beheer van ruimteresources uitgebreid beschreven tempdb .
Wanneer gegevenspagina's in
tempdbworden toegewezen en ongedaan gemaakt, houdt Resource Governor de boekhouding bij van detempdbruimte verbruikt door elke workloadgroep.Als resource governor is ingeschakeld en een
tempdblimiet voor ruimteverbruik is ingesteld voor een workloadgroep en een aanvraag (een query) die wordt uitgevoerd in de workloadgroep, probeert het totaletempdbruimteverbruik door de groep boven de limiet te brengen, wordt de aanvraag afgebroken met fout 1138, ernst 17, kan er geen nieuwe pagina worden toegewezen voor database 'tempdb' omdat deze de limiet overschrijdt die is ingesteld voor workloadgroep 'workload-group-name'.Wanneer een aanvraag wordt afgebroken met fout 1138, wordt de waarde in de
total_tempdb_data_limit_violation_countkolom van de sys.dm_resource_governor_workload_groups dynamische beheerweergave (DMV) met één verhoogd en wordt detempdb_data_workload_group_limit_reacheduitgebreide gebeurtenis geactiveerd.Resource Governor houdt alle
tempdbgebruik bij die kan worden toegeschreven aan een workloadgroep, waaronder tijdelijke tabellen, variabelen (inclusief tabelvariabelen), parameters met tabelwaarden, niet-temporale tabellen, cursors entempdbgebruik tijdens queryverwerking, zoals spools, overlopen, werktabellen en werkbestanden.Het ruimteverbruik voor globale tijdelijke tabellen en niet-tijdgebonden tabellen wordt
tempdbopgenomen in de workloadgroep die de eerste rij in de tabel invoegt, zelfs als sessies in andere werkbelastinggroepen rijen in dezelfde tabel toevoegen, wijzigen of verwijderen.De geconfigureerde
tempdbverbruikslimieten voor elke workloadgroep worden weergegeven in de sys.resource_governor_workload_groups catalogusweergave, in degroup_max_tempdb_data_mbengroup_max_tempdb_data_percentkolommen.Het huidige verbruik en het piekverbruik van
tempdbgeheugenruimte door een workloadgroep worden weergegeven in de sys.dm_resource_governor_workload_groups DMV, in respectievelijk detempdb_data_space_kbenpeak_tempdb_data_space_kbkolommen.Aanbeveling
tempdb_data_space_kbenpeak_tempdb_data_space_kbkolommen in sys.dm_resource_governor_workload_groups worden gehandhaafd, zelfs als er geen limieten voortempdbruimteverbruik zijn ingesteld.U kunt de classificatiefunctie en workloadgroepen maken zonder in eerste instantie limieten in te stellen. Bewaak
tempdbhet gebruik door elke groep in de loop van de tijd om representatieve gebruikspatronen vast te stellen en stel vervolgens limieten in zoals vereist.Tempdbhet gebruik door de versiearchieven, inclusief het permanente versiearchief (PVS) wanneer versneld databaseherstel (ADR) is ingeschakeldtempdb, wordt niet beheerd omdat rijversies kunnen worden gebruikt door aanvragen in meerdere workloadgroepen.De ruimteconsumptie in
tempdbis opgegeven als het aantal gebruikte gegevenspagina's van 8 kB. Zelfs als een pagina niet volledig is gevuld met gegevens, wordt 8 kB toegevoegd aan hettempdbverbruik door een workloadgroep.Tempdbruimtebeheer wordt gedurende de levensduur van een werkgroep onderhouden. Als een workloadgroep wordt verwijderd terwijl globale tijdelijke tabellen of niet-tijdelijke tabellen met de gegevens die aan deze workloadgroep zijn toegewezen zich intempdbbevinden, wordt de ruimte die door deze tabellen wordt gebruikt niet meegeteld onder een andere workloadgroep.Tempdbruimteresourcebeheer bepaalt de ruimte intempdbgegevensbestanden, maar niet de schijfruimte op de onderliggende volumes. Tenzij u gegevensbestanden vooraf naar de beoogde grootten vergroottempdb, kan de ruimte op de volumes waartempdbzich bevindt, worden gebruikt door andere bestanden. Als er geen resterende ruimte is omtempdbgegevensbestanden te laten groeien,tempdbis er mogelijk onvoldoende ruimte voordat een limiet voor de werkbelastinggroep voortempdbhet verbruik van ruimte wordt bereikt.Ruimteresourcebeheer is
tempdbvan toepassing op gegevensbestanden, maar niet op het transactielogboekbestand. Schakeltempdbin om ervoor te zorgen dat het transactielogboektempdbgeen grote hoeveelheid ruimte verbruikt.
Verschillen met ruimtetracering op session-niveau
De sys.dm_db_session_space_usage DMV biedt tempdb ruimtetoewijzings- en deallocatiestatistieken voor elke sessie. Zelfs als er slechts één sessie in een workloadgroep is, komen de door deze DMV verstrekte gebruiksstatistieken voor ruimte mogelijk niet exact overeen met de statistieken in de sys.dm_resource_governor_workload_groups weergave, om de volgende redenen:
- In tegenstelling tot
sys.dm_resource_governor_workload_groups, :sys.dm_db_session_space_usage- Geeft geen ruimtegebruik weer
tempdbdoor de taken die momenteel worden uitgevoerd.sys.dm_db_session_space_usageStatistieken worden bijgewerkt wanneer een taak is voltooid. Statistieken insys.dm_resource_governor_workload_groupsworden continu bijgewerkt. - Houdt geen pagina's bij van de Index Allocation Map (IAM). Voor meer informatie, zie gids voor de architectuur van pagina's en gebieden.
- Geeft geen ruimtegebruik weer
- Nadat rijen zijn verwijderd, of wanneer een tabel, index of partitie wordt verwijderd of afgekapt, kan de toewijzing van gegevenspagina's ongedaan worden gemaakt door een asynchroon achtergrondproces. Deze pagina-deallocatie kan optreden met een vertraging.
sys.dm_resource_governor_workload_groupsweerspiegelt deze pagina-deallocaties wanneer ze optreden, zelfs als de sessie die deze deallocaties heeft veroorzaakt, is gesloten en niet meer aanwezig is insys.dm_db_session_space_usage.
Aanbevolen procedures voor tempdb-ruimteresourcebeheer
Voordat u ruimteresourcebeheer configureert tempdb , moet u rekening houden met de volgende aanbevolen procedures:
Bekijk de algemene beste werkwijzen voor resource governor.
Vermijd voor de meeste scenario's het instellen van de
tempdblimiet voor ruimteverbruik op een kleine waarde of nul, met name voor dedefaultworkloadgroep. Als u dit doet, kunnen veel veelvoorkomende taken mislukken als ze ruimte moeten toewijzen intempdb. Als u bijvoorbeeld de vaste of procentlimiet instelt op 0 voor dedefaultwerkbelastinggroep, kunt u Objectverkenner mogelijk niet openen in SQL Server Management Studio (SSMS).Tenzij u aangepaste workloadgroepen en een classificatiefunctie hebt gemaakt die workloads in hun toegewezen groepen plaatst, vermijd dan om het gebruik door de
tempdbworkloadgroep te beperkendefault. Dit kan query's beëindigen met fout 1138 wanneertempdbnog steeds ongebruikte ruimte heeft die niet kan worden gebruikt door een gebruikersworkload.Het is toegestaan dat de som van
GROUP_MAX_TEMPDB_DATA_MBwaarden voor alle workloadgroepen de maximaletempdbgrootte overschrijdt. Als de maximaletempdbgrootte bijvoorbeeld 100 GB is, kunnen deGROUP_MAX_TEMPDB_DATA_MBlimieten voor workloadgroep A en workloadgroep B elk 80 GB zijn.Deze aanpak voorkomt nog steeds dat elke workloadgroep alle ruimte in
tempdbbeslag neemt door 20 GB voor andere workloadgroepen te verlaten. Tegelijkertijd vermijdt u onnodige afgebroken query's wanneer er nog steeds vrijetempdbruimte beschikbaar is, omdat de werkbelastinggroepen A en B waarschijnlijk niet tegelijkertijd veeltempdbruimte zullen verbruiken.Op dezelfde manier kan de som van
GROUP_MAX_TEMPDB_DATA_PERCENTwaarden voor alle workloadgroepen groter zijn dan 100 procent. U kunt meertempdbruimte toewijzen aan elke groep als u weet dat meerdere groepen waarschijnlijk niet tegelijkertijd een hoogtempdbgebruik veroorzaken.
Verwante inhoud
- Zelfstudie: Voorbeelden voor het configureren van tempdb-ruimteresourcebeheer
- Resourcebeheerder
- Zelfstudie: Voorbeelden van resource governor-configuratie en best practices
- RESOURCE GOVERNOR WIJZIGEN
- WERKGROEP AANMAKEN
- WIJZIG WERKBELASTINGGROEP
- WERKBELASTINGGROEP
VERWIJDEREN - sys.resource_governor_workload_groups
- sys.dm_resource_governor_workload_groups