web-dev-qa-db-fra.com

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

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é, (car le but de la sauvegarde est de pouvoir ensuite les restaurer dans un état identique), alors qu'est-ce que ces 20% qui ne sont pas comptabilisés?

11
Mason Wheeler

L'espace a été alloué aux fichiers de 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

16
SQLRockstar

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

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.

10
gbn

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 qui contiennent 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.

4
StanleyJohns