Dlaczego .bak jest o wiele mniejszy niż baza danych, której jest kopią zapasową?

11

Właśnie zrobiłem kopię zapasową bazy danych SQL Server. Łącznie pliki MDF i LDF wynoszą około 29 GB, ale plik .bak miał tylko 23 GB, około 20% mniej.

Moje pierwsze przypuszczenie, że jedna wersja zestawu danych jest mniejsza niż inna wersja zawierająca te same dane, byłaby kompresją danych, ale kompresja zwykle daje znacznie lepszy współczynnik kompresji niż 20%, szczególnie w przypadku danych o dużej kolejności (takich jak tabele bazy danych). ) Również skompresowanych danych nie można łatwo skompresować dalej, ale wiem, że pliki .bak można skompresować.

Więc jeśli dane nie są kompresowane i nic nie jest odrzucane (ponieważ celem tworzenia kopii zapasowej jest możliwość przywrócenia jej do identycznego stanu później), to po co to 20%, które nie zostało uwzględnione?

Mason Wheeler
źródło

Odpowiedzi:

16

Miejsce zostało przydzielone do plików bazy danych, ale nie zostało wykorzystane.

Możesz utworzyć nową bazę danych, zwiększyć jej rozmiar do 10 GB i zobaczyć, jak pliki przydzielają tyle miejsca na dysku. Jednak dopóki nie umieścisz danych w bazie danych, plik jest zasadniczo pusty, a rozmiar pliku kopii zapasowej będzie minimalny.

HTH

SQLRockstar
źródło
10

W przypadku pełnej kopii zapasowej LDF można zwykle zignorować

MDF zawiera rzeczywiste dane

Plik Bak zawiera tylko strony danych, które są używane w pliku mdf. Część miejsca nie zostanie wykorzystana. To miejsce zajmuje na przykład użytkownika do przebudowy indeksu.

Dość kopii zapasowej 100 GB dla bazy danych, która może mieć plik mdf 250 GB, jest dość typowa. Jeśli mój plik mdf ma taki sam rozmiar jak kopia zapasowa, byłaby to czerwona flaga informująca o nieoczekiwanym zmniejszeniu bazy danych lub braku miejsca na dysku itp

gbn
źródło
4

Po utworzeniu bazy danych możesz określić (dla wydajności), ile miejsca chcesz przeznaczyć na dane i pliki dziennika. To miejsce jest następnie rezerwowane, nawet jeśli żadne dane nie są przechowywane w tabelach. Kopia zapasowa obejmuje tylko zakresy, w których zapisane są dane.

W twoim przypadku łączna wartość MDF / LDF mogła wynosić nawet 100 GB, ale kopia zapasowa nadal wynosiłaby około 23 GB dla wykonanej kopii zapasowej. Jeśli dodano około 1 GB danych, łączna wartość MDF / LDF nadal wynosiłaby 100 GB, ale kopia zapasowa wynosiłaby teraz około 24 GB.

Pełna kopia zapasowa zawiera wszystkie zakresy, które zawierają dane i trochę pliku dziennika. Pełna kopia zapasowa zawiera wszystkie dane od momentu zakończenia zadania tworzenia kopii zapasowej, a nie tylko od momentu uruchomienia zadania tworzenia kopii zapasowej; dlatego wymagana jest również odrobina pliku dziennika.

StanleyJohns
źródło