Planowanie pojemności tempdb

Ten temat zawiera wskazówki dotyczące określania odpowiedniej ilości dysku miejsce, tempdb wymaga.W tym temacie podano również zalecenia dotyczące sposobu konfigurowania tempdb celu uzyskania optymalnej wydajności w środowisku produkcyjnym oraz informacje o monitorowaniu tempdb miejsca użycia.

Sposób użycia tempdb

Tempdb systemowej bazy danych jest globalny zasób, który jest dostępny dla wszystkich użytkowników podłączonych do wystąpienie SQL Server.Tempdb bazy danych jest używany do przechowywania następujących obiektów: obiektów użytkowników, wewnętrzne obiekty i magazyny wersja.

Obiekty użytkownika

Obiekty użytkownika są tworzone jawnie przez użytkownika.Obiekty te mogą być zakres sesja użytkownika lub w zakres z procedury tworzenia obiektu.Procedura jest procedura składowana, wyzwalacza lub funkcja zdefiniowanej przez użytkownika.Obiekty użytkownika może być jedną z następujących czynności:

  • Zdefiniowany przez użytkownika tabel i indeksów

  • System tabel i indeksów

  • Globalne tabel tymczasowych i indeksów

  • Lokalne tabel tymczasowych i indeksów

  • Zmienne Tabela

  • tabelazwracane w s tabela-wycenione funkcje

Wewnętrzne obiekty

Wewnętrzne obiekty są tworzone jako niezbędne przez Aparat baz danych programu SQL Server do procesu SQL Server instrukcji.Wewnętrzne obiekty są tworzone i usunięte w ramach zakres instrukcja.Wewnętrzne obiekty mogą być następujące:

  • Praca z tabel dla operacji kursor lub buforu i składowania czasowego dużego obiektu (LOB).

  • Pliki dla łączyć mieszania lub mieszania pracy wartość zagregowana operacji.

  • Wyniki sortowania pośrednie dla operacji, takich jak tworzenie lub odbudowa indeksów (jeśli jest określony SORT_IN_TEMPDB) lub niektórych kwerend GROUP BY, ORDER BY lub Unii.

Każdy obiekt wewnętrzny wykorzystuje co najmniej dziewięciu stron; jedna strona IAM i jeden fragment ośmiu stron.Aby uzyskać więcej informacji na temat stron i zakresów, zobacz Opis stron i zakresów.

Magazyny wersji

Magazyn wersja jest kolekcja danych stron, które posiadają wierszy danych, które są wymagane do obsługi funkcji, które używają wersja wiersza.Istnieją dwa sklepy wersja: wspólne magazynu wersja i magazynu wersja online budowanie indeksu.Magazyny wersja zawiera następujące informacje:

  • Wersje wierszy wygenerowanych przez transakcje modyfikacji danych w bazie danych, która używa migawka lub Odczyt przekazany przy użyciu poziomów izolacji wersji wiersza.

  • Wersje wierszy generowanych przez transakcje modyfikacji danych dla funkcji, takich jak: Uruchamia operacje indeksu online, wiele zestawów wyników Active (MARS) i po.

W poniższej tabela przedstawiono funkcje w SQL Server , tworzenie obiektów użytkowników, wewnętrzne obiekty lub wersji wiersza w tempdb.O ile to możliwe, dostępne są metody szacowania wykorzystania miejsca na dysku.

Funkcja

Użyj tempdb

Dodatkowe informacje

Bulkload operacji z wyzwalaczami włączone

Bulk-import optimizations are available when triggers are enabled.SQL Server uses row versioning for triggers that update or delete transactions.Kopia każdego wiersza usunięte lub zaktualizowane jest dodawany do magazynu wersja.Zobacz sekcję "Wyzwalacze" występujący w dalszej części tej tabela.

Optymalizacja wydajności importu zbiorczego

Typowe tabela wyrażenie kwerendy

Typowe wyrażenie tabela można traktować jako zestaw wyników tymczasowych określonych w zakresie wykonania pojedynczego wybierz, WSTAW, UPDATE, DELETE lub tworzenie WIDOKU instrukcja.

Gdy plan kwerend dla typowych kwerend wyrażenie tabela używa operator buforu do zapisywania wyniki kwerendy pośrednich Aparat baz danych tworzy tabela Praca w tempdb do obsługi tej operacji.

Przy użyciu typowych wyrażeń tabeli

Z common_table_expression (języka Transact-SQL)

Kursory

Kursory statyczne i napędzane zestawu kluczy za pomocą tabel pracy, które są wbudowane w tempdb.Kursory zestaw kluczy można użyć tabel pracy do przechowywania zestaw kluczy, które identyfikują wiersze kursor.Kursory statyczne służy tabela pracy do przechowywania zestaw wyników pełną kursor.

Użycie miejsca na dysku dla kursory zależą od planu kwerend, który jest wybrany.Jeżeli plan kwerend jest taka sama, jak we wcześniejszych wersjach SQL Server, użycie miejsca na dysku jest około taki sam.

Wybieranie typu kursora — informacje

Poczta bazy danych

Zobacz "Service Broker" występujący w dalszej części tej tabela.

Poczta bazy danych

DBCC CHECKDB

Używa DBCC CHECKDB tempdb pracy tabel do przechowywania wyniki pośrednich i operacji sortowania.

Aby określić tempdb dysku wymagań dotyczących miejsca dla operacji uruchamiania DBCC CHECKDB Z ESTIMATEONLY.

DBCC CHECKDB (Transact-SQL)

Optymalizacja wydajności DBCC CHECKDB

Powiadomienia o zdarzeniach

Zobacz "Service Broker" występujący w dalszej części tej tabela.

Opis powiadomienia o zdarzeniach

Indeksy

Podczas tworzenia lub odbudować indeks (w trybie offline lub online) i zestaw bezpośrednio na możliwość SORT_IN_TEMPDB Aparat baz danych do używania tempdb do przechowywania wyniki pośrednich sortowania, które służą do tworzenia indeksu.Gdy określono SORT_IN_TEMPDB i sortowanie jest wymagane, tempdb musi mieć wystarczającą ilość miejsca do przechowywania największej indeksu plus ilość miejsca na dysku jest równa wartości pamięci opcja utworzenia indeksu.Aby uzyskać więcej informacji, zobacz Przykład miejsca na dysku indeksu.

Tabele i indeksów można podzielić na partycje.Dla indeksów podzielonym na partycje, jeśli określono opcję SORT_IN_TEMPDB indeks i indeks jest wyrównana z tabela bazowa, musi być wystarczająca ilość miejsca w tempdb do przechowywania pośrednie sortowania uruchamia największy rozmiar.Jeśli indeks nie jest odpowiednio wyrównany, musi być wystarczająca ilość miejsca w tempdb do przechowywania pośrednie sortowania uruchamia wszystkie partycje.Aby uzyskać więcej informacji, zobacz Specjalne wytyczne dla indeksów podzielonym na partycje.

Indeks online operacje użycia wiersza versioning izolowania operacji indeksu skutków zmiany wprowadzone przez innych transakcji.Przechowywanie wersji wiersza eliminuje potrzebę żądanie blokady udziału w wierszach, które zostały przeczytane.Równoczesnych użytkowników aktualizacji i usunąć operacje podczas online indeksu operacje wymagają miejsca dla wersja rekordów tempdb.Podczas operacji indeksu online za pomocą SORT_IN_TEMPDB i sortowanie jest wymagane, tempdb musi mieć również opisany wcześniej wyniki sortowania pośrednie dodatkowego miejsca.Operacje online indeksu tworzenie, usuwanie lub odbudować indeks klastrowany także wymagać dodatkowego miejsca na dysku do tworzenia i utrzymywania indeksu tymczasowych mapowania.Operacji tworzenia i aktualizacji statystyk można użyć do sortowania próbki wierszy dla tworzenia statystyk tempdb.Aby uzyskać więcej informacji, zobacz Wymagania dotyczące miejsca na dysku dla operacji DDL indeksu.

tempdb i tworzenie indeksu

Specjalne wytyczne dla indeksów podzielonym na partycje

Wymagania dotyczące miejsca na dysku dla operacji DDL indeksu

Przykład miejsca na dysku indeksu

Jak Online pracy operacji indeksu

Wpisz dane dużych obiektów (LOB), zmiennych i parametrów

The large object data types are varchar(max), nvarchar(max), varbinary(max)text, ntext, image, and xml.Te typy może być maksymalnie 2 GB i mogą być używane jako zmiennych i parametrów procedur przechowywanych, funkcji zdefiniowanych przez użytkownika, instancje lub kwerendy.Parametry i zmienne zdefiniowane jako typ dane LOB należy używać pamięci głównej jako magazynu, jeśli wartości są małe.Jednakże duże wartości są przechowywane w tempdb.Kiedy LOB zmiennych i parametrów są przechowywane w tempdb, są one traktowane jako obiekty wewnętrzne.Kwerendy można sys.dm_db_session_space_usage dynamiczny widok zarządzania zgłosić przydzielonych do wewnętrznych obiektów dla danej sesja stron.

Niektóre funkcje wewnętrzne ciąg, takich jak SUBSTRING lub POWTÓRZENIEM, mogą wymagać przejściowego składowania w tempdb gdy działają na wartościach LOB.Podobnie, gdy poziom izolacji transakcji opartego na przechowywanie wersja wiersza jest włączone do bazy danych i dużych obiektów się zmiany, fragmentu zmienionego obiektu LOB jest kopiowany do magazynu wersja w tempdb.

Duża wartość typów danych

Wiele zestawów wyników Active (MARS)

Wiele zestawów wyników active mogą wystąpić w przypadku pojedynczego połączenia; jest to powszechnie nazywa MARS.Jeśli problemy z sesja MARS modyfikacji danych instrukcja (takie jak INSERT, UPDATE lub DELETE) po zestawie wyników active wiersze będące dotyczyła modyfikacja instrukcja są przechowywane w magazynie wersja w tempdb.Zobacz "Versioning wiersza" występujący w dalszej części tej tabela.

Za pomocą wielu aktywnych wynik ustawia (MARS)

Kwerendy powiadomień

Zobacz "Service Broker" występujący w dalszej części tej tabela.

Za pomocą kwerendy powiadomień

Zapytania

Kwerendy zawierające SELECT, INSERT, UPDATE i usuwanie instrukcji można użyć do przechowywania wyniki pośrednich mieszania sprzężeń, agregatów mieszania lub sortowanie wewnętrzne obiekty.

Gdy jest buforowany plan wykonania kwerend, tabele prac wymaganych przez plan są buforowane.Tabela pracy są buforowane, tabeli zostanie obcięta i dziewięciu stron pozostają w pamięci podręcznej do ponownego użycia.Zwiększa to wydajność dalej wykonanie kwerendy.Jeśli w systemie brakuje pamięci, Aparat baz danych można usunąć plan wykonania i usuwanie tabel związanych prac.

Wykonanie planu buforowania i ponownego użycia

Przechowywanie wersji wiersza

Przechowywanie wersji wiersza jest ogólne ramy, który jest używany do obsługi następujących funkcji:

  • Wyzwalacze

  • Wiele zestawów wyników Active (MARS)

  • Operacje indeksu określ opcję ONLINE

  • Wiersz poziomów izolacji transakcji opartego na przechowywanie wersji:

    • Nowej implementacji poziom izolacji popełnione odczytu, który używa wersji wiersza w celu zapewnienia spójności odczytu poziomie instrukcja.

    • A poziom izolacji migawka zapewnienie spójności odczytać poziomu transakcji.

Wiersz wersja są przechowywane w tempdb wersja magazynu dla jak aktywnej transakcji należy do niego dostęp.Zawartość bieżącego magazynu wersja jest zwracany w sys.dm_tran_version_store.Magazynu wersji strony są śledzone poziom pliku, ponieważ są one globalne zasoby.Można użyć version_store_reserved_page_count kolumna w sys.dm_db_file_space_usage , aby wyświetlić bieżący rozmiar magazynu wersja.Oczyszczanie magazynu wersja należy wziąć pod uwagę najdłuższego działającą transakcję, która wymaga dostępu do określonej wersja.Najdłuższy działającą transakcję związane z wersja magazynu oczyszczanie może być rozpoznana przez przeglądanie elapsed_time_seconds kolumna w sys.dm_tran_active_snapshot_database_transactions.Liczniki Wolnego miejsca Tempdb (KB) i wersja magazynu rozmiar (KB) w transakcji obiektu może służyć do monitorowania rozmiaru i stopy wzrostu magazynu wersji wiersza w tempdb.Aby uzyskać więcej informacji, zobacz SQL Server obiekt transakcji.

Aby oszacować ilość miejsca jest wymagana w tempdb wersja wiersza, należy zastanowić się, że aktywnej transakcji musi przechowywać swoje zmiany w magazynie wersja.Oznacza to, czy transakcja migawka, która rozpoczyna się później dostęp stare wersje.Ponadto w przypadku transakcji migawkę aktywnego wszystkich wersja przechowywać dane, wygenerowanych przez transakcje, które są aktywne, kiedy uruchamia migawka również muszą być przechowywane.

Oto podstawowe formuły:

[Rozmiar magazynu wersji] = 2 *

[Wersja magazynu danych generowanych na minutę] *

[Systemem najdłuższy czas (w minutach) transakcji]

Opis wiersza na podstawie wersji poziomów izolacji

Obciążenie zasobów wersji wiersza

Service Broker

Service Broker ułatwia deweloperom tworzenie asynchronicznych, luźno aplikacji, w których niezależnych współdziałania składników do wykonania zadania.These application components exchange messages that contain the information that is required to complete the task.Service Broker explicitly uses tempdb for preserving existing dialog context that cannot stay in memory.Rozmiar jest około 1 KB na okno dialogowe.

Ponadto Service Broker niejawnie wykorzystuje tempdb przez buforowanie obiektów w kontekście wykonania kwerendy, takie jak tabele pracy, które są używane dla zdarzenia timer i tło dostarczonych konwersacji.

Bazy danych korespondencji, Powiadomienia O zdarzeniach, i Powiadomień kwerendy niejawnie za pomocą Service Broker.

Omówienie (Service Broker)

Procedury przechowywane

Procedury przechowywane, można utworzyć obiektów użytkowników, takich jak tabele tymczasowe globalny lub lokalny i ich indeksów, zmiennych lub parametrów.Obiekty tymczasowe procedury przechowywane mogą być buforowane optymalizacji operacje, które można usunąć i utworzyć tych obiektów.To zachowanie można zwiększyć tempdb wymagania dotyczące miejsca na dysku.Do dziewięciu stron tymczasowy obiekt są przechowywane do ponownego użycia.Zobacz "tabele tymczasowe i table zmiennych" występujący w dalszej części tej tabela.

Tworzenie procedur przechowywanych (aparat bazy danych)

Tabele tymczasowe i table zmiennych

  • Zdefiniowany przez użytkownika tabel i indeksów

  • System tabel i indeksów

  • Globalne tabel tymczasowych i indeksów

  • Lokalne tabel tymczasowych i indeksów

  • table zmienne

  • tabelazwracane w s tabela-wycenione funkcje

Tabele tymczasowe i table zmienne są przechowywane w tempdb.Wymagania dotyczące miejsca na dysku dla obiektów tabela tymczasowa są takie same, jak we wcześniejszych wersjach SQL Server.Metoda szacowania rozmiaru tabela tymczasowa rozmiar jest taka sama jak szacowanie rozmiaru standardowej tabela.Aby uzyskać więcej informacji, zobacz Szacowanie rozmiaru tabeli.

A table zmiennej zachowuje się jak zmiennej lokalnej.A table jest zmienna typu table i jest używany głównie do tymczasowego przechowywania zestawu wierszy, które są zwracane jako zestaw wyników funkcja zwracająca tabelę.Miejsce na dysku potrzebną do przechowania table zmiennej zależy od rozmiaru deklarowana zmienna i wartość przechowywana w zmiennej.

Lokalnych tabel tymczasowych i zmienne są buforowane, gdy są spełnione następujące warunki:

  • Nazwany ograniczenia nie są tworzone.

  • Instrukcji Definition Language (DDL) danych, które wpływają na tabela nie są uruchamiane tabela tymczasowa został utworzony, takich jak instrukcji CREATE INDEX lub utworzyć statystyki.

  • Tymczasowy obiekt nie zostanie utworzony za pomocą dynamicznego kodu SQL, takie jak: sp_executesql N'create table #t(a int)'.

  • Utworzono tymczasowy obiekt wewnątrz innego obiektu, takie jak procedura składowana, wyzwalacza, funkcja zdefiniowana przez użytkownika; lub zwrotu tabela zdefiniowanej przez użytkownika, jest funkcja zwracająca tabelę.

Po tabela tymczasowa lub table zmienna jest buforowany, tymczasowy obiekt nie jest usunięte, kiedy kończy się jego celem.Zamiast tego tymczasowy obiekt jest obcinana.Do dziewięciu stron są przechowywane i ponownie następnego czas wykonywanego przez obiekt wywołujący.Buforowanie zezwala na operacje, drop i tworzyć obiekty do wykonać bardzo szybko i zmniejsza rywalizacja podział strona.

Dla zapewnienia optymalnej wydajności należy obliczyć miejsca na dysku, wymagane do buforowanych lokalnych tabel tymczasowych lub table zmiennych w tempdb za pomocą następującego wzoru:

Strona 9 na tymczasowej tabela

* Liczba średnia tabel tymczasowych na procedury

* Liczba jednoczesnych wykonań maksymalną procedury

CREATE TABLE (Transact-SQL)

Użycie zmiennych i parametrów (aparat bazy danych)

DECLARE @local_variable (Transact-SQL)

Wyzwalacze

Dodaje się i usunięte tabel, które są używane w po wyzwalacze są tworzone w tempdb.Oznacza to, że numerów wersji są wiersze, które są aktualizowane lub usuwane przez wyzwalacz.Obejmuje to wszystkie wiersze, które są modyfikowane przez instrukcja , opalane wyzwalacza.Wiersze, które zostały wstawione przez wyzwalacz nie są numerów wersji.

ZAMIAST używania wyzwalaczy tempdb w sposób podobny do kwerendy.Użycie miejsca na dysku dla zamiast wyzwalaczy jest taka sama, jak we wcześniejszych wersjach SQL Server.Zobacz "Kwerend" wcześniej w tej tabela.

Gdy użytkownik ładowanie zbiorcze włączone do danych za pomocą wyzwalaczy, kopię każdego usunięte lub zaktualizowane wiersz jest dodawany do magazynu wersja.

CREATE TRIGGER (Transact-SQL)

Optymalizacja wydajności importu zbiorczego

Obciążenie zasobów wersji wiersza

Funkcje zdefiniowane przez użytkownika

Funkcje zdefiniowane przez użytkownika można tworzyć obiekty tymczasowe użytkownika, takie jak tabele globalny lub lokalny i ich indeksów, zmiennych lub parametrów.Na przykład zwrotu tabela funkcja zwracająca tabelę jest przechowywany w tempdb.

Typy danych, które są dozwolone dla parametrów i zwracają wartości w funkcji wartość skalarna i tabela-wyceniane funkcje obejmują większość typów dane LOB.Na przykład wartość zwracana może być typu xml lub varchar(max).Zobacz "Zmienne typu danych (LOB) i parametry obiektów duży" wcześniej w tej tabela.

Tymczasowe obiekty w tabela-buforowany ważnych funkcji zdefiniowanej przez użytkownika operacje, drop i utworzyć tych obiektów.Zobacz "tabele tymczasowe i table zmiennych" wcześniej w tej tabela.

CREATE FUNCTION (Transact-SQL)

XML

Zmiennych i parametrów typu xml do 2 GB.Używają pamięci głównej jako magazyn, jak wartości są niewielkie.Jednakże duże wartości są przechowywane w tempdb.Zobacz "Zmienne typu danych (LOB) i parametry obiektów duży" wcześniej w tej tabela.

Sp_xml_preparedocument systemowa procedura składowana tworzy tabela Praca w tempdb.MSXML parser używa tabela pracy do przechowywania zanalizowano dokumentu XML.Wymagania dotyczące miejsca na dysku dla tempdb jest prawie proporcjonalna do rozmiaru określonego dokumentu XML, gdy wykonać procedura składowana.

Implementowanie XML w programie SQL Server

sp_xml_preparedocument (języka Transact-SQL)

Badanie XML przy użyciu OPENXML

Zdolności planowania uaktualnienia do programu SQL Server

Określanie odpowiedniego rozmiaru dla tempdb w produkcji środowiska zależy od wielu czynników.Jak opisano wcześniej w tym temacie, czynniki te obejmują obciążenia istniejących i SQL Server funkcje używane.Zaleca się analizowanie obciążenia istniejących, wykonując następujące zadania w SQL Server środowisko testowe:

  1. Ustawić autogrow dla tempdb.

  2. Wykonania poszczególnych kwerend lub monitor i pliki śledzenia obciążenia tempdb miejsca użycia.

  3. Wykonanie operacji obsługi indeksu, takie jak Odbudowa indeksów i monitora tempdb miejsca.

  4. Użyj wartości wykorzystania miejsca z poprzednich kroków przewidzieć wykorzystanie sieci całkowitego obciążenia; dostosować tę wartość dla przewidywanego działania współbieżne, a następnie zestaw rozmiar tempdb odpowiednio.

Aby uzyskać więcej informacji dotyczących monitorowania tempdb miejsce, zobacz Rozwiązywanie problemów za mało miejsca na dysku w tempdb.Aby uzyskać więcej informacji o szacowaniu tempdb użycie podczas operacji indeksu, zobacz Przykład miejsca na dysku indeksu.

Konfigurowanie tempdb środowiskach produkcji

Aby osiągnąć optymalną tempdb wydajności następujące wytyczne i zalecenia zawarte w tempdb Optymalizowanie wydajności.

Jak Monitor tempdb użycia

Z miejsca na dysku w tempdb może spowodować znaczne zakłócenia w SQL Server środowiska produkcyjnego i może uniemożliwić aplikacje uruchomione na ukończenie operacji.Można użyć sys.dm_db_file_space_usage dynamiczny widok zarządzania, monitorowania miejsca używanego przez te funkcje w tempdb pliki.Ponadto monitorowanie aktywności alokacji lub dezalokacji strona w tempdb poziom zadań lub sesja można użyć sys.dm_db_session_space_usage i sys.dm_db_task_space_usage dynamiczne zarządzanie widokami.Te widoki służą do identyfikowania duże kwerendy, tabele tymczasowe lub zmienne Tabela korzystających z partii tempdb miejsca na dysku.Istnieje również kilka liczników, których można używać do monitorowania wolnego miejsca, która jest dostępna w tempdb i również zasoby, które są za pomocą tempdb.Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów za mało miejsca na dysku w tempdb.