Почему .bak намного меньше, чем база данных, для которой он является резервной копией?

11

Я только что сделал резервную копию базы данных SQL Server. Файлы MDF и LDF вместе составляют около 29 ГБ, но файл .bak был только 23 ГБ, примерно на 20% меньше.

Моим первым предположением, когда одна версия набора данных меньше другой версии, содержащей те же данные, будет сжатие данных, но сжатие обычно дает гораздо лучший коэффициент сжатия, чем 20%, особенно для высоко упорядоченных данных (таких как таблицы базы данных. ) Кроме того, сжатые данные не могут быть легко сжаты дальше, но я знаю, что файлы .bak могут быть сжаты.

Так что, если данные не сжимаются и ничего не сбрасывается (поскольку весь смысл создания резервной копии заключается в том, чтобы впоследствии восстановить ее в идентичное состояние), то что за эти 20% не учтены?

Мейсон Уилер
источник

Ответы:

16

Пространство было выделено для файлов базы данных, но не использовалось.

Вы можете создать новую базу данных, сделать ее размером 10 ГБ и посмотреть, как файлы выделяют такой объем пространства на диске. Однако до тех пор, пока вы не поместите данные в базу данных, файл будет практически пустым, а размер файла резервной копии будет минимальным.

НТН

SQLRockstar
источник
10

Для полного резервного копирования LDF обычно можно игнорировать

MDF содержит фактические данные

Файл Bak содержит только те страницы данных, которые используются внутри mdf. Некоторое пространство не будет использовано. Это пространство является служебным пользователем для перестройки индекса, например.

Весьма типично иметь резервную копию 100 ГБ для БД, которая может иметь 250 ГБ mdf. Если размер моего mdf-файла совпадает с размером моей резервной копии, это будет красный флаг о неожиданном сжатии БД или нехватке места на диске и т. Д.

ГБН
источник
4

Когда БД создается, вы можете указать (для производительности), сколько места вы хотите выделить для данных и файлов журналов. Это пространство затем резервируется, даже если в таблицах нет данных. Резервируются только те экстенты, в которые записаны данные.

В вашем случае ваш общий объем MDF / LDF мог бы даже составить 100 ГБ, но резервная копия для вашей резервной копии по-прежнему будет составлять около 23 ГБ. Если было добавлено около 1 ГБ данных, общий объем MDF / LDF по-прежнему составлял бы 100 ГБ, но резервная копия теперь была бы около 24 ГБ.

Полная резервная копия содержит все экстенты, в которых есть данные, и немного файла журнала. Полная резервная копия содержит все данные с момента завершения задачи резервного копирования, а не только с момента запуска задачи резервного копирования; Вот почему немного файла журнала также требуется.

StanleyJohns
источник