De ce este un fișier .bacpac atât de mic în comparație cu un fișier .bak din aceeași bază de date?

Am făcut backup pentru bazele de date SQL Server 2014 Express pentru import pe alte servere și am observat o diferență în dimensiunea fișierului între .bacpac și .bak.

De ce este un fișier .bacpac atât de mic în comparație cu un .bak fișier al aceleiași baze de date?

Vă mulțumim pentru orice informații!

Răspuns

A

  • .bacpac file = Schema + Data. Rețineți că datele sunt BCP” editate folosind formatul nativ (nu citibil de Human).

    • Puteți redenumi .bacpac în .zip pentru a vedea conținut real.

    • Puteți utiliza ...DAC\bin\sqlpackage.exe pentru a extrage .bacpac conținut programat.

    • Este un instant instantaneu care include date utilizator + schemă din SQL Server sau Azure SQL Database.

  • Backup (de obicei au .bak extensie) = O copie de rezervă completă a bazei de date conține o copie completă a bazei de date și oferă un singur moment în care baza de date poate fi restaurată. O copie de rezervă completă conține unele înregistrări ale jurnalului de tranzacții, astfel încât componenta restaurată (baza de date, fișier sau grup de fișiere) să poată fi coerentă tranzacțional.

Un BACPAC nu înlocuiește o copie de rezervă completă. Este doar un instantaneu care poate fi folosit pentru a muta o bază de date de pe un server pe altul (sau în cloud) și arhivarea unei baze de date existente într-un format deschis .

Din testul meu, mai jos sunt rezultatele

introduceți descrierea imaginii aici

Comentarii

  • Fișierul jurnal este probabil cel mai mare motiv pentru diferența de dimensiune.
  • Eu ' presupun că acolo ' nu are nici un index în .bacpac, care este probabil un mare contribuitor la dimensiunea fișierului.

Răspuns

O copie de rezervă creată prin (.bak) este o copie pagină cu pagină a unei baze de date. Rețineți că baza de date SQL Server conține nu numai pagini de date. Există, de asemenea, pagini cu indexuri care pot fi mari. Mai multe detalii aici

O copie de rezervă creată utilizând aplicația Export Data-Tier (.bacpac) operația este pur și simplu un rând exportat dintr-o bază de date în format XML plasat într-o arhivă. Puteți vizualiza manual conținutul BACPAC, trebuie doar să modificați extensia acestui fișier în .zip.

Dimensiunea .bacpac fișierul este direct proporțional cu numărul de înregistrări dintr-o bază de date (ținând cont de raportul de compresie).

Dimensiunea fișierului .bak depinde nu numai de date, ci și de dimensiunea indexurilor.

Uneori, aceasta poate fi o problemă, verificați de exemplu această vechea discuție

Prin urmare, .bacpac fișierul are de obicei dimensiuni mai mici.

Am efectuat cele mai simple teste cu baza de date AdventureWorks și am obținut aceste rezultate.

AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb 

Ar trebui să folosesc .bacpac pentru a reduce dimensiunea copiei de rezervă?

Nu

Aplicația Export \ Import Data Tier are câteva dezavantaje semnificative, care sunt critice pentru bazele de date mari:

  1. Aceasta nu este o operațiune consecventă tranzacțional. Tabelele sunt exportate secvențial. Poate exista o problemă cu cheia externă. Acest lucru este de două ori rău, deoarece îl descoperiți numai atunci când încercați să vă recuperați. Prin urmare, atunci când efectuați această operațiune, trebuie să faceți un instantaneu al bazei de date și să exportați instantaneul.
  2. Este nevoie de mult mai mult atât pentru export cât și pentru import. În momentul în care trebuie urgent să rulați o restaurare, nu veți putea face acest lucru, deoarece restaurarea de la .bacpac va dura câteva ore.
  3. Exportul poate încărca semnificativ serverul, în special pentru cele mari tabele, care, împreună cu punctul anterior, fac din copiile de rezervă regulate o decizie dubioasă.

Copia de siguranță clasică creată utilizând comanda BACKUP DATABASE este lipsită de aceste dezavantaje, pentru a economisi spațiu utilizați Recuperarea punctuală în timp

Exportul \ Importarea aplicației de nivel de date poate fi considerată o modalitate de a crea o copie de rezervă numai pentru bazele de date mici, în acele cazuri în care nu aveți acces la sistemul de fișiere. În acest caz, nu exportați baza de date live în niciun caz, asigurați-vă că creați un instantaneu pentru exportul consecvent.

Răspuns

Ei bine, cea mai mare diferență este că datele sunt comprimate (folosind zip) pentru fișierul .bacpac ceea ce nu este cazul unui .bak normal fişier. Pur și simplu comprimați fișierul .bak și vedeți că este „mult mai mic;)

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *