Pourquoi un .bak est-il tellement plus petit que la base de données dont il est une sauvegarde?

11

Je viens de faire une sauvegarde d'une base de données SQL Server. Les fichiers MDF et LDF totalisent environ 29 Go, mais le fichier .bak n'était que de 23 Go, environ 20% plus petit.

Ma première supposition lorsqu'une version d'un ensemble de données est plus petite qu'une autre version contenant les mêmes données serait la compression des données, mais la compression donne généralement un bien meilleur taux de compression que 20%, en particulier pour les données très ordonnées (telles que les tables de base de données). ) De plus, les données compressées ne peuvent pas être facilement compressées davantage, mais je sais que les fichiers .bak peuvent être compressés.

Donc, si les données ne sont pas compressées et que rien n'est supprimé (parce que l'intérêt de faire une sauvegarde est de pouvoir ensuite la restaurer dans un état identique), alors qu'est-ce que ces 20% qui ne sont pas comptabilisés?

Mason Wheeler
la source

Réponses:

16

L'espace a été alloué aux fichiers de la base de données, mais pas utilisé.

Vous pouvez créer une nouvelle base de données, lui donner une taille de 10 Go et voir les fichiers allouer cette quantité d'espace sur le disque. Cependant, jusqu'à ce que vous mettiez des données dans la base de données, le fichier est essentiellement vide et la taille de votre fichier de sauvegarde sera minimale.

HTH

SQLRockstar
la source
10

Pour une sauvegarde complète, le LDF peut généralement être ignoré

Le MDF contient les données réelles

Le fichier Bak ne contient que des pages de données utilisées dans le mdf. Certains espaces ne seront pas utilisés. Cet espace est utilisé par l'utilisateur pour les reconstructions d'index par exemple.

Il est assez courant d'avoir une sauvegarde de 100 Go pour une base de données qui peut avoir un mdf de 250 Go. Si mon mdf est de la même taille que ma sauvegarde, ce serait un drapeau rouge à propos d'un rétrécissement inattendu de la base de données ou d'un manque d'espace disque, etc.

gbn
la source
4

Lorsqu'une base de données est créée, vous pouvez spécifier (pour les performances) la quantité d'espace que vous souhaitez allouer aux données et aux fichiers journaux. Cet espace est alors réservé même si aucune donnée n'est stockée dans les tables. Seuls les domaines dans lesquels des données sont écrites sont sauvegardés.

Dans votre cas, votre total MDF / LDF aurait même pu être de 100 Go mais votre sauvegarde serait toujours d'environ 23 Go pour la sauvegarde que vous avez effectuée. Si environ 1 Go de données était ajouté, votre total MDF / LDF serait toujours de 100 Go, mais votre sauvegarde serait désormais d'environ 24 Go.

Une sauvegarde complète contient toutes les extensions contenant des données et une partie du fichier journal. La sauvegarde complète contient toutes les données à partir du moment où la tâche de sauvegarde s'est terminée, et pas seulement à partir du moment où la tâche de sauvegarde a commencé; c'est pourquoi une partie du fichier journal est également requise.

StanleyJohns
la source