Chociaż kurczenie się jest rzeczywiście niebezpieczne z powodów wymienionych tutaj. Pomiędzy odpowiedzią Jimbo a odpowiedzią Johna jest szczęśliwy środek ... Zawsze powinieneś poważnie rozważyć, czy chcesz zmniejszyć bazę danych.
W idealnym świecie - stworzyłbyś DB z dużą ilością wolnego miejsca, w którym mógłbyś rosnąć. Nazywam to „właściwym dopasowaniem” do swojej bazy danych. Pozwoliłbyś, aby ta wolna przestrzeń była na miejscu i nie starała się jej oddać i utrzymywała swój całkowity rozmiar dokładnie na użytym rozmiarze. Ponieważ twoja baza danych w końcu znów wzrośnie .. Wtedy znowu się skurczysz .. I utkniesz w tym okropnym wzorze bezużytecznych skurczów, po których następują wzrosty - i przez cały czas, jak niektórzy zauważyli, będziesz zwiększenie fragmentacji indeksu.
Napisałem o tym na blogu, gdzie napominałem ludzi, by „ Nie dotykaj tego przycisku zmniejszania! ”, Ale czasami… Czasami musisz. Jeśli masz dużą bazę danych, po prostu zwolniłeś znaczną ilość miejsca i nie spodziewaj się, że odrośnie w niej - cóż, możesz rozważyć skurczenie się jako operację jednorazową, o ile będziesz w stanie zająć się fragmentacją indeksu po odbudowie im. Operacja obkurczania może być czasochłonna, dlatego warto zaplanować ją na czas, w którym można zapłacić tę cenę za obkurczanie. Podejście polegające na tworzeniu pustej bazy danych i kopiowaniu do niej danych działa - ale może to stać się bardzo trudne w przypadku większych baz danych i dużej ilości danych.
Jeśli planujesz dodać tę przestrzeń z powrotem do bazy danych poprzez normalne wykorzystanie i wzorce wzrostu w przyszłości, możesz po prostu zostawić to miejsce.
Również
Powiedziałeś, że „wyczyściłeś” swój dziennik transakcji. Byłbym ciekawy, jak to zrobiłeś, ale kiedy czytasz post, który udostępniłem i inne w serii, zobaczysz kilka wskazówek na temat zarządzania dziennikiem transakcji. Ale w skrócie - jeśli jesteś w trybie pełnego odzyskiwania, powinieneś regularnie wykonywać kopie zapasowe dziennika, aby dziennik sam się nie używał. W przeciwnym razie - bez tworzenia kopii zapasowych dziennika w trybie pełnym - plik dziennika stale rośnie i rośnie i zawsze rośnie i zawsze zapisuje to, co zrobiłeś, ponieważ powiedziałeś SQLowi, że nie chcesz tylko utrzymywać tego dziennika w celu przywrócenia go po awarii, ale chcesz zachować ręczne tworzenie kopii zapasowej, aby odtworzyć transakcje / cofnąć transakcje, aby odzyskać dane do określonego momentu w celu odzyskania ... Jeśli jesteś prosty i widzisz nadmierny wzrost dziennika,BEGIN TRAN ... do work.... COMMIT TRAN
lub czy wydałeś tylko jedną dużą DELETE
instrukcję i usunąłeś cały bałagan danych w jednej niejawnej transakcji).
Zakładam również, że szukasz wolnego miejsca w systemie plików. Jeśli szukasz go w SQL i w tym dużym pliku, który masz - być może czekasz na zakończenie czyszczenia duchów, jeśli patrzysz bezpośrednio po operacji. Paul Randal bloguje o Ghost Cleanup .