Udostępnij za pośrednictwem


Shrinking the Transaction Log

Jeśli wiadomo, że plik dziennik transakcji zawiera nieużywane miejsce, w którym użytkownik się nie być wymagające, użytkownik może odzyskania miejsca nadmiar zmniejszając rozmiar dziennik transakcji.Ten proces jest nazywany zmniejszanie w pliku dziennika.

Zmniejszanie może występować tylko wtedy, gdy baza danych jest tryb online, a także, gdy co najmniej jeden plik dziennika wirtualnego jest wolne.W niektórych przypadkach zmniejszając w dzienniku może nie być możliwe do czasu po następnym obcinania dziennika.

Uwaga

Zazwyczaj obcinania świadczy automatycznie zgodnie z modelem proste odzyskiwanie bazy danych jest kopii zapasowych i w obszarze model pełnego odzyskiwanie, gdy dziennik transakcji będzie wykonywana kopia zapasowa.Jednak kilka czynników może być opóźnione obcinania.Aby uzyskać więcej informacji zobaczFactors That Can Delay Log Truncation.

Aby zmniejszyć plik dziennika (bez zmniejszania pliki bazy danych)

Aby monitorować zdarzenia dotyczące zmniejszania pliku dziennika

To monitor log space

Uwaga

Zmniejszanie bazy danych i plików dziennika zestaw automatyczne.Zaleca się jednak przed automatycznego zmniejszania i autoshrink Właściwość bazy danych jest zestaw FAŁSZ domyślnie. Jeśli autoshrink jest ustawiona na wartość TRUE, automatyczne zmniejszanie zmniejsza rozmiar pliku tylko wtedy, gdy jest używana więcej niż 25 procent jego miejsce. Plik jest ściągnąć do rozmiaru, przy którym tylko nieużywane miejsce jest 25 procent, pliku lub do oryginalnego rozmiaru pliku, w zależności od tego, który jest większy.Aby uzyskać informacje na temat zmieniania ustawień autoshrink właściwości, zobacz How to: View or Change the Properties of a Database (SQL Server Management Studio)— za pomocą Automatyczne zmniejszanie Właściwość Opcje strona—or ALTER DATABASE SET Options (Transact-SQL)— Opcja AUTO_SHRINK.

W jaki sposób działa zmniejszania pliku dziennika?

Zmniejszanie dziennik transakcji zmniejsza jego rozmiar fizyczny przez usunięcie jednego lub większej liczby plików nieaktywny wirtualnego dziennika.Zmniejszenie rozmiaru jednostki zawsze jest to wirtualny plik dziennika.Na przykład jeśli plik dziennika 600 megabajtów (MB), który został podzielony na sześć dzienniki wirtualnego 100 MB, rozmiar pliku dziennika można zmniejszyć jedynie w przyrostach o rozmiarze 100 MB.Można zmniejszyć rozmiar pliku do rozmiarów, takich jak 500 MB lub 400 MB, ale plik nie może być ograniczona do rozmiarów, takich jak 433 MB lub 525 MB.Plik dziennika wirtualnego, w którym zostały przedstawione wszystkie rekordy aktywnego dziennika, oznacza to, aktywny wirtualny plik dziennika, stanowi część dziennika logicznych i nie można go usunąć.Aby uzyskać więcej informacji zobaczArchitektura fizyczny dziennik transakcji.

Uwaga

The Database Engine chooses the size of the wirtualny plik dziennika dynamically when log files are created or extended. Aby uzyskać więcej informacji zobaczArchitektura fizyczny dziennik transakcji.

Bieżący rozmiar dla pliku dziennika jest taka sama, jak łączny rozmiar strony, które są używane przez pliki dziennika wirtualnych.Należy jednak zauważyć, że strony nie są używane przez pliki dziennika.Nie można zwolnić wirtualnych plików dziennika, przechowujące dowolną część dziennika logiczne.Jeśli wszystkie pliki dziennika wirtualnego w pliku dziennika przechowywania części logicznych dziennika, plik nie może być ściągnąć.Zmniejszanie nie jest możliwe do czasu, po obcinania dziennika oznacza jedną lub więcej plików dziennika wirtualnego jako nieaktywne.

Operacja zmniejszania pliku, można usunąć tylko pliki nieaktywny wirtualnego dziennika.Jeśli rozmiar miejsce docelowe nie zostanie określony, Operacja zmniejszania pliku powoduje usunięcie tylko to nieaktywny wirtualny plik dziennika s poza ostatni aktywny wirtualny plik dziennika w pliku.Jeżeli określono rozmiar docelowego, operacja danego zmniejszenia — plik usuwa tylko tyle nieaktywny plików dziennika wirtualnego podejścia, ale nie może przekraczać rozmiaru miejsce docelowe.Po zmniejszanie, plik dziennika zwykle jest nieco większy niż rozmiar docelowego i nigdy nie będzie mniejsza.Pliki dziennika wirtualnego utrudnić przewidywania faktycznie zmniejszy się wielkość pliku dziennika.

Gdy zmniejszył się dowolny plik, zwolnione miejsce musi pochodzić od końca pliku.Gdy plik dziennik transakcji jest ściągnąć, za mało wirtualnych plików dziennika na końcu pliku dziennika są zwalniane zmniejszenie dziennika do rozmiaru żądanie użytkownika.The target_size specified by the user is rounded to the next highest wirtualny plik dziennika boundary. Na przykład, jeśli użytkownik Określa target_size 325 MB dla naszych przykładowy plik 600 MB zawiera sześć plików dziennika wirtualnego 100 MB ostatnie dwa pliki dziennika wirtualne są usuwane i nowy rozmiar pliku wynosi 400 MB.

Operacja SHRINKDATABASE DBCC lub SHRINKFILE DBCC natychmiast próbuje zmniejszyć fizyczny plik dziennika do żądanego rozmiaru:

  • Jeśli żadna część logiczne dziennika w plikach dziennika wirtualnego rozciąga się poza target_size Oznacz wirtualnych plików dziennika, które pochodzą od target_size znak są zwalniane i pomyślne instrukcja DBCC zostaje uzupełniona wiadomości nie.

Jeśli część logiczne dziennika w dziennikach wirtualnego przekroczenie target_size Oznaczanie, SQL Server Database Engine zwalnia tyle miejsca, jak to możliwe i wysyła komunikat informacyjny. Komunikat informuje, jakie kroki trzeba wykonać, aby usunąć dziennik logiczne z wirtualnego dzienników na końcu pliku.Po wykonaniu tej czynności może następnie ponownie instrukcja DBCC, aby zwolnić pozostałe miejsce.

Na przykład, załóżmy, że plik dziennika 600 MB, który zawiera sześć plików dziennika wirtualnego zawiera logiczną dziennika, który rozpoczyna się w dzienniku wirtualnego 3 i kończy w dzienniku wirtualnego 4 podczas wykonywania instrukcja SHRINKFILE DBCC z target_size 275 MB, który jest trzech czwartych ze sposobu, w dzienniku wirtualnego 3:

Log file with 6 virtual log files before shrinking

5 I 6 wirtualnych plików dziennika są zwalniane natychmiast, ponieważ nie zawierają one część dziennika logiczne.Niemniej jednak aby sprostać określonym target_size, wirtualny plik dziennika 4 powinny również być zwolnione, ale nie jest, ponieważ posiada zakończenia część dziennika logiczne. Po zwalniania wirtualny plik dziennika s 5 i 6, Database Engine wypełnia pozostałą część wirtualny plik dziennika 4 fikcyjny rekordy. Na końcu pliku dziennika to wymusza na końcu wirtualny plik dziennika 1.W większości systemów wszystkie transakcje wyjściowych wirtualny plik dziennika 4 będzie zadeklarowanej w ciągu kilku sekund.Oznacza to, że cały aktywna część dziennika jest przenoszony do pliku dziennika wirtualnego 1.Plik dziennika teraz wygląda podobnie do następującej:

Log file is reduced to 4 virtual files

Instrukcja SHRINKFILE DBCC również wysyła komunikat informacyjny, który informuje, że nie może zwolnić całe miejsce na żądanie i uruchomienie instrukcji kopia zapasowa dziennik, aby zwolnić pozostałe miejsce.Po aktywna część dziennika zostanie przeniesiony do pliku dziennika wirtualnego 1, instrukcja dziennik kopia zapasowa obcina cały dziennik logiczny, który znajduje się wirtualny plik dziennika 4:

Log file results after truncating the log

Ponieważ wirtualny plik dziennika 4 zawiera już jakiejkolwiek jego części logicznych dziennika, można teraz uruchomić z tym samym sprawozdaniu SHRINKFILE DBCC target_size 275 MB. wirtualny plik dziennika 4 następnie zostaje zwolniony i zmniejsza rozmiar pliku dziennika fizycznego do żądanego rozmiaru.

Uwaga

Niektóre czynniki, takie jak długo działającą transakcję, można aktywnych plików dziennika wirtualnych przez dłuższy czas.To może ograniczyć ubytek dziennika lub nawet uniemożliwić dziennik zmniejszanie wcale.Aby uzyskać więcej informacji zobaczFactors That Can Delay Log Truncation.