Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x) Preview i nowsze wersje
Po włączeniu tempdb
zarządzania zasobami przestrzeni, zwiększasz niezawodność i unikasz przestojów, uniemożliwiając uruchamianie zapytań lub obciążeń, które zużywają dużą ilość przestrzeni w tempdb
.
Począwszy od programu SQL Server 2025 (17.x) (wersja zapoznawcza), możesz użyć zarządcy zasobów, aby wymusić limit całkowitej tempdb
ilości miejsca zużywanego przez grupę obciążeń. Grupę obciążeń można skojarzyć z aplikacją, użytkownikiem, grupą użytkowników itp. Gdy żądanie (zapytanie) próbuje przekroczyć limit, zarządca zasobów przerywa je z wyraźnym błędem wskazującym, że limit grupy obciążeń został wymuszony.
W efekcie można podzielić przestrzeń udostępnioną tempdb
na różne obciążenia. Można na przykład ustawić wyższy limit dla grupy obciążeń używanej przez aplikację o znaczeniu krytycznym i ustawić niższy limit dla default
grupy obciążeń używanej przez wszystkie inne obciążenia.
Przykłady konfiguracji krok po kroku można znaleźć w temacie Samouczek: Przykłady konfigurowania zarządzania zasobami przestrzeni tempdb.
Rozpocznij pracę z zarządcą zasobów
Zarządca zasobów udostępnia elastyczną strukturę do ustawiania różnych tempdb
limitów przestrzeni dla różnych aplikacji, użytkowników, grup użytkowników itp. Limity można również ustawić na podstawie logiki niestandardowej.
Jeśli dopiero zaczynasz korzystać z zarządcy zasobów w programie SQL Server, zobacz Zarządca zasobów , aby dowiedzieć się więcej o jego pojęciach i możliwościach.
Aby zapoznać się z przewodnikiem po konfiguracji zarządcy zasobów i najlepszymi rozwiązaniami, zobacz Tutorial: Resource governor configuration examples and best practices (Samouczek: przykłady konfiguracji zarządcy zasobów i najlepsze rozwiązania).
Ustawianie limitów użycia miejsca w bazie danych tempdb
Możesz ograniczyć tempdb
zużycie miejsca przez grupę roboczą na jeden z następujących dwóch sposobów:
Ustaw stały limit przy użyciu argumentu
GROUP_MAX_TEMPDB_DATA_MB
.Stały limit jest przydatny, gdy wymagania dotyczące użycia obciążenia
tempdb
są znane z wyprzedzeniem lub gdytempdb
rozmiar nie zmienia się.Ustaw limit procentu przy użyciu argumentu
GROUP_MAX_TEMPDB_DATA_PERCENT
.Limit procentu jest przydatny, gdy można zmienić maksymalny rozmiar
tempdb
w czasie i chcesztempdb
, aby miejsce dostępne dla każdej grupy obciążeń zmieniało się proporcjonalnie bez ponownego konfigurowania zarządcy zasobów. Na przykład, jeśli zwiększysz rozmiar maszyny wirtualnej na platformie Azure z uruchomionym SQL Server i zwiększysz maksymalny rozmiartempdb
, przestrzeńtempdb
dostępna dla każdej grupy obciążeń z limitem procentowym również się zwiększa.
Aby uzyskać więcej informacji na temat argumentów GROUP_MAX_TEMPDB_DATA_MB
i GROUP_MAX_TEMPDB_DATA_PERCENT
, zobacz CREATE WORKLOAD GROUP (TWORZENIE GRUPY OBCIĄŻEŃ) lub ALTER WORKLOAD GROUP (ALTER WORKLOAD GROUP).
Jeśli dla tej samej grupy obciążeń określono zarówno limity stałe, jak i procentowe, stały limit ma pierwszeństwo przed limitem procentu.
W danym wystąpieniu programu SQL Server możesz mieć kombinację grup obciążeń ze stałymi limitami, limitami procentowymi lub bez limitów tempdb
zużycia miejsca.
Konfiguracja limitu procentowego
Limity procentowe obowiązują tylko wtedy, gdy tempdb
konfiguracja pliku danych spełnia wymagania podsumowane w poniższej tabeli:
Konfiguracja | Opis | Maksymalny rozmiar bazy danych Tempdb (100%) | Limit procentowy obowiązuje |
---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB nie jest ustawiona- Dla wszystkich plików danych MAXSIZE nie jest UNLIMITED - Dla wszystkich plików danych FILEGROWTH nie jest równy zeru |
tempdb pliki danych mogą się automatycznie powiększać do maksymalnego rozmiaru |
Suma MAXSIZE wartości dla wszystkich plików danych |
Tak |
-
GROUP_MAX_TEMPDB_DATA_MB nie jest ustawiona- Dla wszystkich plików danych MAXSIZE jest UNLIMITED - Dla wszystkich plików danych, FILEGROWTH wynosi zero |
tempdb pliki danych są wstępnie dopasowywane do ich zamierzonych rozmiarów i nie mogą się rozwijać dalej |
Suma SIZE wartości dla wszystkich plików danych |
Tak |
Wszystkie inne konfiguracje | Nie. |
Następujące zapytanie umożliwia wyświetlenie bieżącej tempdb
konfiguracji pliku danych:
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';
Dla danego pliku w zestawie wyników:
- Jeśli kolumna
maxsize_mb
jestNULL
, toMAXSIZE
jestUNLIMITED
. - Gdy wartość
filegrowth_mb
lubfilegrowth_percent
jest równa zero, wtedyFILEGROWTH
jest równe zero.
Jeśli ustawisz GROUP_MAX_TEMPDB_DATA_PERCENT
i wykonasz instrukcję ALTER RESOURCE GOVERNOR RECONFIGURE , ale konfiguracja pliku danych nie spełnia wymagań, instrukcja zostanie ukończona pomyślnie, a limity procentowe są przechowywane, ale nie są wymuszane. W takim przypadku zostanie wyświetlony komunikat ostrzegawczy 10989, ważność 10, GROUP_MAX_TEMPDB_DATA_PERCENT nie jest w mocy, ponieważ wymagania dotyczące konfiguracji bazy danych tempdb nie są spełnione. Komunikat jest również rejestrowany w dzienniku błędów.
Aby wdrożyć limity procentowe, skonfiguruj ponownie tempdb
pliki danych, aby spełnić wymagania i ponownie wykonaj ALTER RESOURCE GOVERNOR RECONFIGURE
. Aby uzyskać więcej informacji na temat konfigurowania SIZE
, FILEGROWTH
i MAXSIZE
, zobacz ALTER DATABASE File and Filegroup Options (Opcje ALTER DATABASE File i Filegroup).
Uwaga / Notatka
W przypadku nowego wystąpienia programu SQL Server, plik danych MAXSIZE
jest UNLIMITED
, a FILEGROWTH
jest większy niż zero, co oznacza, że limity procentowe nie są skuteczne. Aby użyć limitów procentowych, należy wykonać następujące czynności:
- Wstępnie przenieś
tempdb
pliki danych do ich zamierzonych rozmiarów i ustaw naFILEGROWTH
zero. - Ustaw
MAXSIZE
każdego pliku danych na ograniczoną wartość.Dla każdego
tempdb
woluminu pliku danych upewnij się, że sumaMAXSIZE
wartości dla plików na woluminie jest mniejsza lub równa dostępnej przestrzeni dyskowej na woluminie.Jeśli na przykład wolumin ma 100 GB wolnego miejsca i zawiera dwa
tempdb
pliki danych, ustawMAXSIZE
każdy plik na rozmiar 50 GB lub mniej.
Jeśli obowiązuje limit procentu i dodajesz, usuwasz lub zmieniasz rozmiar tempdb
plików danych, musisz wykonać ALTER RESOURCE GOVERNOR RECONFIGURE
polecenie , aby zaktualizować zarządcę zasobów przy użyciu nowego maksymalnego rozmiaru tempdb
(100%).
Jak to działa
W tej sekcji opisano szczegółowo zarządzanie zasobami kosmicznymi.
W miarę przydzielania i cofania przydziału stron
tempdb
danych zarządca zasobów utrzymuje księgowośćtempdb
miejsca zużywanego przez każdą grupę obciążeń.Jeśli zarządca zasobów jest włączony, a limit zużycia miejsca jest ustawiony dla grupy obciążenia, zaś zapytanie uruchomione w tej grupie próbuje zwiększyć całkowite zużycie miejsca przez grupę powyżej tego limitu, zapytanie zostanie przerwane z błędem 1138, stopień 17,
tempdb
Gdy żądanie zostanie przerwane z błędem 1138, wartość w kolumnie
total_tempdb_data_limit_violation_count
widoku dynamicznego zarządzania sys.dm_resource_governor_workload_groups jest zwiększona o jeden, a rozszerzone zdarzenietempdb_data_workload_group_limit_reached
zostaje uruchomione.Zarządca zasobów śledzi wszystkie
tempdb
użycia, które można przypisać grupie roboczej, w tym tabele tymczasowe, zmienne (w tym zmienne tabelowe), parametry wartości tabeli, tabele nietymczasowe, kursory itempdb
użycie podczas przetwarzania zapytań, takie jak przepełnienia, tabele robocze i pliki robocze.Zużycie miejsca dla globalnych tabel tymczasowych i tabel nietymczasowych w
tempdb
jest uwzględniane w grupie roboczej, która wstawia pierwszy wiersz do tabeli, nawet jeśli sesje w innych grupach roboczych dodają, modyfikują lub usuwają wiersze w tej samej tabeli.Skonfigurowane
tempdb
limity użycia dla każdej grupy obciążeń są widoczne w widoku katalogu sys.resource_governor_workload_groups w kolumnachgroup_max_tempdb_data_mb
igroup_max_tempdb_data_percent
.Bieżąca konsumpcja i szczytowa konsumpcja
tempdb
miejsca dla grupy obciążeń są widoczne w widoku dynamicznym sys.dm_resource_governor_workload_groups w kolumnachtempdb_data_space_kb
ipeak_tempdb_data_space_kb
.Wskazówka
kolumny
tempdb_data_space_kb
ipeak_tempdb_data_space_kb
w sys.dm_resource_governor_workload_groups są zachowywane, nawet jeśli nie ustawiono żadnych limitów zużycia miejscatempdb
.Możesz utworzyć funkcję klasyfikatora i grupy obciążeń bez uprzedniego ustawiania limitów. Monitoruj
tempdb
użycie poszczególnych grup w miarę upływu czasu, aby ustanowić reprezentatywne wzorce użycia, a następnie ustaw limity zgodnie z potrzebami.Tempdb
użycie przez magazyny wersji, w tym magazyn wersji trwałej (PVS), gdy przyspieszone odzyskiwanie bazy danych (ADR) jest włączone wtempdb
, nie podlega regulacji, ponieważ wersje wierszy mogą być używane przez różne grupy obciążeń.Zużycie miejsca w programie
tempdb
jest uwzględniane jako liczba używanych stron danych o rozmiarze 8 KB. Nawet jeśli strona nie jest całkowicie wypełniona danymi, dodaje 8 KB dotempdb
użycia przez grupę obciążeń.Tempdb
zarządzanie przestrzenią jest prowadzone przez cały okres istnienia grupy roboczej. Jeśli grupa obciążeń zostanie usunięta, gdy globalne tabele tymczasowe lub tabele nietymczasowe z danymi przypisanymi do tej grupy obciążeń pozostaną wtempdb
, miejsce używane przez te tabele nie jest uwzględniane w żadnej innej grupie obciążeń.Tempdb
zarządzanie zasobami przestrzeni kontroluje przestrzeń wtempdb
plikach danych, ale nie przestrzeń dyskową na woluminach podstawowych. O ile nie wstępnie utworzysztempdb
plików danych do ich zamierzonych rozmiarów, miejsce na woluminach, gdzie znajduje siętempdb
, może być zajęte przez inne pliki. Jeśli nie pozostało miejsca natempdb
zwiększenie rozmiaru plików danych, totempdb
może zabraknąć miejsca, zanim zostanie osiągnięty limit przestrzeni dla grupy roboczej na zużycie przestrzenitempdb
.Zarządzanie zasobami przestrzeni w programie
tempdb
dotyczy plików danych, ale nie pliku dziennika transakcji. Aby upewnić się, że dziennik transakcjitempdb
nie zużywa dużej ilości miejsca, włącz ADR wtempdb
.
Różnice w śledzeniu przestrzeni na poziomie sesji
Widok DMV sys.dm_db_session_space_usage zapewnia tempdb
statystyki alokacji i dealokacji przestrzeni dla każdej sesji. Nawet jeśli w grupie obciążeń istnieje tylko jedna sesja, statystyki użycia miejsca udostępniane przez ten widok DMV mogą nie odpowiadać dokładnie statystykom podanym w widoku sys.dm_resource_governor_workload_groups z następujących powodów:
- W przeciwieństwie do
sys.dm_resource_governor_workload_groups
,sys.dm_db_session_space_usage
:- Nie odzwierciedla
tempdb
wykorzystania miejsca przez obecnie wykonywane zadania. Statystyki w programiesys.dm_db_session_space_usage
są aktualizowane po zakończeniu zadania. Statystyki w programiesys.dm_resource_governor_workload_groups
są stale aktualizowane. - Nie śledzi stron mapy alokacji indeksu (IAM). Aby uzyskać więcej informacji, zobacz Podręcznik architektury stron i zakresów.
- Nie odzwierciedla
- Po usunięciu wierszy lub po usunięciu lub obcięciu tabeli, indeksu lub partycji strony danych mogą zostać cofnięte przez asynchroniczny proces w tle. Dealokacja strony może wystąpić z opóźnieniem.
sys.dm_resource_governor_workload_groups
odzwierciedla te dealokacje stron w miarę ich występowania, nawet jeśli sesja, która spowodowała te dealokacje, została zamknięta i nie jest już obecna wsys.dm_db_session_space_usage
.
Najlepsze rozwiązania dotyczące ładu zasobów przestrzeni bazy danych tempdb
Przed skonfigurowaniem tempdb
zarządzania zasobami przestrzeni należy wziąć pod uwagę następujące najlepsze praktyki:
Zapoznaj się z ogólnymi najlepszymi rozwiązaniami dotyczącymi zarządcy zasobów.
W przypadku większości scenariuszy należy unikać ustawiania limitu
tempdb
zużycia miejsca na małą wartość lub zero, szczególnie w przypadkudefault
grupy obciążeń. Jeśli to zrobisz, wiele typowych zadań może rozpocząć się niepowodzeniem, jeśli trzeba przydzielić miejsce w programietempdb
. Jeśli na przykład ustawiono stały lub procentowy limit na 0 dladefault
grupy obciążeń, być może nie będzie można otworzyć Eksploratora obiektów w programie SQL Server Management Studio (SSMS).Jeśli nie utworzono niestandardowych grup obciążeń i funkcji klasyfikatora, która umieszcza obciążenia w ich dedykowanych grupach, unikaj ograniczania użycia
tempdb
przez grupy obciążeńdefault
. Może powodować przerwanie zapytań z błędem 1138, gdytempdb
nadal ma nieużywane miejsce, które nie może być wykorzystane przez żadne obciążenie użytkownika.Jest dozwolone, aby suma
GROUP_MAX_TEMPDB_DATA_MB
wartości dla wszystkich grup obciążeń przekraczała maksymalnytempdb
rozmiar. Jeśli na przykład maksymalnytempdb
rozmiar wynosi 100 GB,GROUP_MAX_TEMPDB_DATA_MB
limity dla grupy obciążeń A i grupy obciążeń B mogą wynosić 80 GB.Takie podejście nadal uniemożliwia każdej grupie obciążeń zużycie całego miejsca w
tempdb
, pozostawiając 20 GB dla innych grup obciążeń. Jednocześnie unikasz niepotrzebnych przerwań zapytań, gdytempdb
wolne miejsce jest nadal dostępne, ponieważ grupy obciążeń A i B prawdopodobnie nie będą zużywać dużej ilościtempdb
miejsca w tym samym czasie.Podobnie suma
GROUP_MAX_TEMPDB_DATA_PERCENT
wartości dla wszystkich grup obciążeń może przekroczyć 100 procent. Jeśli wiesz, że wiele grup jest mało prawdopodobne, że spowodują wysokietempdb
obciążenie w tym samym czasie, możesz przydzielić więcejtempdb
miejsca do każdej grupy.
Treści powiązane
- Samouczek: przykłady konfiguracji zarządzania zasobami przestrzeni tempdb
- Zarządca zasobów
- Samouczek: przykłady konfiguracji zarządcy zasobów i najlepsze rozwiązania
- ZMIEŃ ZARZĄDCĘ ZASOBÓW
- TWORZENIE GRUPY OBCIĄŻEŃ
- ZMIEN GRUPĘ OBCIĄŻEŃ
- USUŃ GRUPĘ OBCIĄŻEŃ
- sys.grupy_obciążenia_kontrolera_zasobów
- sys.dm_resource_governor_workload_groups