Por que um .bak é muito menor que o banco de dados de que é um backup?

11

Acabei de fazer um backup de um banco de dados do SQL Server. Os arquivos MDF e LDF juntos totalizam cerca de 29 GB, mas o arquivo .bak era apenas 23 GB, cerca de 20% menor.

Meu primeiro palpite quando uma versão de um conjunto de dados é menor que outra versão que contenha os mesmos dados seria a compactação de dados, mas a compactação geralmente produz uma taxa de compactação muito melhor que 20%, especialmente para dados altamente ordenados (como tabelas de banco de dados. ) Além disso, os dados compactados não podem ser mais facilmente compactados, mas eu sei que os arquivos .bak podem ser compactados.

Portanto, se os dados não estão sendo compactados e nada está sendo descartado (porque todo o objetivo de fazer um backup é poder restaurá-los para um estado idêntico posteriormente), então para que 20% não são contabilizados?

Mason Wheeler
fonte

Respostas:

16

O espaço foi alocado para os arquivos do banco de dados, mas não usado.

Você pode criar um novo banco de dados, aumentar em 10 GB e ver os arquivos alocarem essa quantidade de espaço no disco. No entanto, até você colocar os dados no banco de dados, o arquivo estará essencialmente vazio e o tamanho do arquivo de backup será mínimo.

HTH

SQLRockstar
fonte
10

Para um backup completo, o LDF pode ser ignorado geralmente

O MDF contém os dados reais

O arquivo Bak contém apenas páginas de dados que estão em uso dentro do mdf. Algum espaço não será usado. Esse espaço é um usuário superior para reconstruções de índice, por exemplo.

É bastante comum ter um backup de 100 gb para um banco de dados que pode ter um mdf de 250 gb. Se o meu mdf for do mesmo tamanho do meu backup, seria sinal de alerta sobre um encolhimento inesperado do banco de dados ou falta de espaço em disco, etc.

gbn
fonte
4

Quando um banco de dados é criado, é possível especificar (para desempenho) quanto espaço você deseja alocar para os arquivos de dados e log. Esse espaço é reservado, mesmo que nenhum dado seja armazenado nas tabelas. Somente as extensões que possuem dados gravados nele são copiadas.

No seu caso, seu total de MDF / LDF poderia ter sido de 100 GB, mas o backup ainda teria cerca de 23 GB para o backup que você fez. Se cerca de 1 GB de dados foram adicionados, o total de MDF / LDF ainda seria de 100 GB, mas seu backup agora seria de cerca de 24 GB.

Um backup completo contém todas as extensões que contêm dados e um pouco do arquivo de log. O backup completo contém todos os dados desde o momento em que a tarefa de backup terminou, e não apenas a partir do momento em que a tarefa de backup foi iniciada; é por isso que também é necessário um pouco do arquivo de log.

StanleyJohns
fonte