it-swarm.it

Perché un .bak è molto più piccolo del database di cui è un backup?

Ho appena preso un backup di un database di SQL Server. Il MDF e LDF insieme ammontano a circa 29 GB, ma il file .bak era solo 23 GB, circa il 20% più piccolo.

La mia prima ipotesi quando una versione di un set di dati è più piccola di un'altra versione contenente gli stessi dati sarebbe la compressione dei dati, ma la compressione di solito produce un rapporto di compressione molto migliore del 20%, specialmente per i dati altamente ordinati (come le tabelle del database. ) Inoltre, i dati compressi non possono essere facilmente compressi ulteriormente, ma so che i file .bak possono essere compressi.

Quindi, se i dati non vengono compressi e non viene scartato nulla (perché l'intero punto di fare un backup è essere in grado di ripristinarli in uno stato identico in seguito), allora che cos'è quel 20% che non viene considerato?

11
Mason Wheeler

Lo spazio è stato allocato ai file del database, ma non utilizzato.

È possibile creare un nuovo database, renderlo di 10 GB di dimensione e vedere i file allocare quella quantità di spazio sul disco. Tuttavia, fino a quando non si inseriscono i dati nel database, il file è essenzialmente vuoto e le dimensioni del file di backup saranno minime.

HTH

16
SQLRockstar

Per un backup completo, l'LDF può di solito essere ignorato

Il MDF contiene i dati effettivi

Il file Bak contiene solo pagine di dati che sono in uso all'interno del mdf. Un po 'di spazio non verrà utilizzato. Questo spazio è ad esempio un utente in testa per le ricostruzioni dell'indice.

È abbastanza tipico avere un backup da 100 GB per un DB che può avere un mdf da 250 GB. Se il mio mdf ha le stesse dimensioni del mio backup, sarebbe una bandiera rossa su un DB imprevisto o mancanza di spazio su disco, ecc

10
gbn

Quando viene creato un DB, è possibile specificare (per prestazioni) lo spazio che si desidera allocare ai file di dati e di registro. Questo spazio viene quindi riservato anche se non sono memorizzati dati nelle tabelle. Viene eseguito il backup solo delle estensioni in cui sono stati scritti dati.

Nel tuo caso, il totale MDF/LDF avrebbe potuto essere addirittura di 100 GB, ma il backup sarebbe comunque di circa 23 GB per il backup che hai eseguito. Se fossero stati aggiunti circa 1 GB di dati, il totale MDF/LDF sarebbe comunque pari a 100 GB, ma il backup ora sarebbe di circa 24 GB.

Un backup completo contiene tutte le estensioni che contengono dati e un po 'del file di registro. Il backup completo contiene tutti i dati dal momento in cui l'attività di backup è terminata e non solo dall'avvio dell'attività di backup; questo è il motivo per cui è richiesto anche un po 'del file di registro.

4
StanleyJohns