TempDB database path to lokalizacja plików tej bazy systemowej, którą warto umieścić na szybkim dysku.
Co oznacza ścieżka bazy TempDB w SQL Server
TempDB database path oznacza lokalizację plików systemowej bazy danych tempdb w Microsoft SQL Server. Silnik tworzy tę bazę podczas uruchamiania instancji, dlatego jej pliki nie służą do trwałego przechowywania danych aplikacji. Po restarcie instancji zawartość tempdb jest tworzona ponownie, a obiekty tymczasowe, tabele robocze i inne dane pomocnicze z poprzedniego uruchomienia nie są zachowywane. Ścieżka obejmuje osobno pliki danych, zwykle z rozszerzeniem .mdf lub .ndf, oraz plik dziennika transakcji z rozszerzeniem .ldf.
tempdb jest używana między innymi do tabel tymczasowych oznaczanych przez # lub ##, zmiennych tabelarycznych, wyników pośrednich sortowania, operacji agregacji, indeksowania, izolacji migawek oraz wersjonowania wierszy. Jeżeli zapytanie albo procedura składowana potrzebuje więcej pamięci niż dostępny obszar roboczy, SQL Server może zapisać część danych w tempdb. W konsekwencji wydajność tej bazy wpływa na wiele niezależnych zapytań wykonywanych w tej samej instancji.
Jak SQL Server korzysta z plików tempdb
Pliki danych tempdb przechowują strony danych i obiekty robocze tworzone przez silnik, natomiast plik dziennika rejestruje operacje wymagane do zachowania spójności transakcji. W typowej konfiguracji występuje jeden główny plik danych oraz jeden plik dziennika, ale SQL Server pozwala skonfigurować także dodatkowe pliki danych. Wszystkie pliki danych powinny mieć zaplanowany rozmiar początkowy i przyrost automatyczny. Ustawienie przyrostu w megabajtach jest zwykle bardziej przewidywalne niż przyrost procentowy, ponieważ procent powoduje coraz większe rozszerzenia wraz ze wzrostem pliku.
Lokalizacja plików ma znaczenie wtedy, gdy nośnik jest wolny, przeciążony albo współdzielony z innymi intensywnie używanymi plikami. Opóźnienia odczytu i zapisu mogą wtedy zwiększać czas sortowania, tworzenia indeksów, wykonywania złączeń oraz operacji wykorzystujących wersjonowanie wierszy. Sama zmiana ścieżki nie naprawia jednak problemu z małą ilością pamięci, nieefektywnym zapytaniem ani blokadami. Przyczynę trzeba odróżnić od objawu, analizując obciążenie instancji, rozmiar plików, ich przyrosty oraz dostępne miejsce na woluminie.
Sprawdzanie i zmiana ścieżki plików
Aktualne położenie plików można sprawdzić w SQL Server zapytaniem sys.master_files. Przykładowa instrukcja zwraca nazwę pliku, typ, rozmiar oraz ścieżkę zapisane dla bazy tempdb:
SELECT name, type_desc, physical_name, size, growth, is_percent_growth FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); Rozmiar w kolumnie size jest podawany w stronach po 8 KB, a wartość growth zależy od ustawienia przyrostu. Do oceny rzeczywiście zajętego miejsca w plikach danych można użyć także widoku sys.database_files po przełączeniu kontekstu na tempdb.
Zmiana ścieżki wymaga wskazania nowej nazwy fizycznej poleceniem ALTER DATABASE, na przykład ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQLData\tempdb.mdf');. Dla pliku dziennika należy użyć jego logicznej nazwy, często templog, oraz odpowiedniej ścieżki docelowej. Polecenie aktualizuje konfigurację, lecz nie przenosi automatycznie istniejącego pliku. Po zatrzymaniu instancji pliki trzeba przenieść do wskazanego katalogu, zapewniając kontu usługi SQL Server wymagane uprawnienia do odczytu i zapisu, a następnie uruchomić instancję ponownie. Błędna ścieżka, brak katalogu albo brak dostępu może uniemożliwić start SQL Server.
Kontrola konfiguracji i objawów problemów
Podczas diagnostyki warto sprawdzić, czy wszystkie pliki danych tempdb mają porównywalny rozmiar początkowy i taki sam przyrost. Nierówne ustawienia mogą powodować, że jeden plik jest wykorzystywany częściej od pozostałych. Należy również monitorować wolne miejsce na woluminie, częstotliwość automatycznego powiększania plików, opóźnienia wejścia-wyjścia oraz oczekiwania związane z alokacją stron. W starszych konfiguracjach można spotkać rywalizację o strony alokacji tempdb, ale jej rozwiązanie wymaga analizy wersji SQL Server i rzeczywistego profilu obciążenia, a nie mechanicznego kopiowania ustawień z innego środowiska.
Gdy tempdb szybko rośnie, trzeba ustalić, który proces tworzy obiekty tymczasowe lub generuje dużą ilość wersji wierszy. Pomocne są informacje o aktywnych sesjach, zapytaniach i transakcjach, a także widoki dynamicznego zarządzania, takie jak sys.dm_db_file_space_usage oraz sys.dm_db_task_space_usage. Sam fakt umieszczenia plików na szybkim dysku nie gwarantuje prawidłowej pracy. Konfiguracja powinna uwzględniać wymagania konkretnej instancji, dostępny budżet miejsca, sposób wykonywania zapytań i procedury odtwarzania usługi po zmianie lokalizacji.