Log Shrinking i Truncation w MS SQL Server

Log Shrinking i Truncation w MS SQL Server

Dziennik transakcji odgry­wa kluc­zową rolę w bazie danych MS SQL Server: utrzy­mu­je zapis akty­wnoś­ci bazy danych, kluc­zowy dla przy­wróce­nia ostat­nich danych w przy­pad­ku awarii. Jednakże jest są ograniczenia: log transakcji może zuży­wać znaczącą ilość miejs­ca w akty­wnej bazie danych. MS SQL Server udostęp­nia dwa dzi­ała­nia mające na celu zrównoważyć te duże wyma­gania przestrzenne…

LOG TRUNCATION

To mech­a­nizm usuwa­nia wpisów z pliku dzi­en­ni­ka transakcji. Normalnie, SQL Server obsługu­je usuwanie automaty­cznie i bez inter­wencji admin­is­tracji, nie jest konieczne.Częstotliwość obci­na­nia zależy od mod­elu odzyski­wa­nia uży­wanego w bazie danych MS SQL Server ( full or bulk-logged mod­el). W celu "przy­cię­cia" dzi­en­ni­ka transakcji moż­na wydać polece­nie kopii zapa­sowej dzi­en­ni­ka transakcji. Można to zro­bić za pomocą następu­jącego polece­nia Transact-SQL:

BACKUP LOG <database_name> WITH TRUNCATE_ONLY;

LOG SHRINKING

LOG TRUNCATION ma za zadanie usunąć transakc­je z pliku transakcji, ale nie fak­ty­cznie zmniejszyć ilość miejs­ca zarez­er­wowanego pliku. Może się zdarzyć że w MS SQL Server, dzi­en­nik transakcji ostate­cznie wzrośnie do wielkoś­ci sprzed obcię­cia, więc nie zwol­ni się miejs­ca na dysku przy­dzieloną dla dzi­en­ni­ka transakcji. Może się okazać że dzi­en­nik transakcji "urośnie" sztucznie do dużych rozmiarów.

W takim przy­pad­ku trze­ba ręcznie zmniejszyć plik dzi­en­ni­ka transakcji, aby odzyskać miejsce na dysku. Plik transakcji moż­na zmniejszyć za pomocą następu­jącego polece­nia Transact-SQL:

DBCC SHRINKFILE(<filename>,<desired_shrink_size>)

Gdzie desired_shrink_size jest iloś­cią miejs­ca, w megaba­j­tach, które chce­my odzyskać.

Z oczy­wistych względów, odzyskać najwięcej miejs­ca na dysku moż­na bezpośred­nio po oper­acji LOG TRUNCATION.

Tags: , , , , , ,

Jedna odpowiedź

  1. Paweł pisze:

    o ile dobrze pamię­tam moż­na też bez­pieczniej przestaw­ić tryb logowa­nia na sim­ple , wykon­ać back­up odłączyć bazę usunąć log, a przy ponownym podłącze­niu log odt­worzy się automaty­cznie, następ­nie przestaw­ić logowanie na full, sposób trochę niepro­fesjon­al­ny ale uży­cie desired_shrink_size i pomył­ka w cyfer­kach może nas dro­go kosztować

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Zadzwoń teraz!