Ik “heb back-ups gemaakt van mijn SQL Server 2014 Express-databases voor import naar andere servers en merkte een verschil in bestandsgrootte op tussen .bacpac
en .bak
.
Waarom is een .bacpac
-bestand zo klein vergeleken met een .bak
bestand van dezelfde database?
Bedankt voor alle inzichten!
Antwoord
A
-
.bacpac
file = Schema + gegevens. Houd er rekening mee dat gegevens BCP” zijn, uitgaande van de oorspronkelijke indeling (niet leesbaar door mensen).-
U kunt de
.bacpac
hernoemen in.zip
om de werkelijke inhoud. -
U kunt
...DAC\bin\sqlpackage.exe
-opdrachtregel gebruiken om de.bacpac
inhoud programmatisch. -
Het is een snapshot die gebruikersgegevens + schema van SQL Server of Azure SQL Database bevat.
-
–
- Back-up (gewoonlijk
.bak
extensie) = Een VOLLEDIGE databaseback-up bevat een volledige kopie van de database en biedt een enkel moment waarop de database kan worden hersteld. Een volledige back-up bevat enkele transactielogboekrecords zodat de herstelde component (database, bestand of bestandsgroep) transactiegerelateerd consistent kan worden gemaakt.
Een BACPAC
is geen vervanging voor een VOLLEDIGE back-up. Het is slechts een momentopname die kan worden gebruikt om een database van de ene server naar een andere (of naar de cloud) en archiveren van een bestaande database in een open indeling .
Van mijn test, hieronder zijn de resultaten
Opmerkingen
- Het logbestand is waarschijnlijk de grootste reden voor het verschil in grootte.
- Ik ' neem aan dat ' s geen indexgegevens in de .bacpac, wat waarschijnlijk een GROTE bijdrage levert aan de bestandsgrootte.
Antwoord
Een back-up gemaakt via het BACKUP DATABASE
commando (.bak
) is een pagina-voor-pagina kopie van een database. Merk op dat de SQL Server-database niet alleen gegevenspaginas bevat. Er zijn ook paginas met indexen die groot kunnen zijn. Meer details hier
Een back-up gemaakt met de Export Data-Tier Application (.bacpac
) operatie is gewoon een geëxporteerde rijen uit een database in XML-formaat geplaatst in een archief. U kunt de inhoud van BACPAC handmatig bekijken, wijzig gewoon de extensie van dit bestand in .zip.
De grootte van de .bacpac
-bestand is rechtevenredig met het aantal records in een database (rekening houdend met de compressieverhouding).
De grootte van het .bak
-bestand hangt niet alleen af van de gegevens, maar ook van de grootte van de indexen.
Soms kan dit een probleem zijn, controleer bijvoorbeeld deze oude discussie
Daarom is de .bacpac
-bestand is meestal kleiner.
Ik heb de eenvoudigste tests uitgevoerd met de AdventureWorks -database en kreeg deze resultaten.
AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb
Moet ik .bacpac gebruiken om mijn back-upgrootte te verkleinen?
Nee.
Export \ Import Data Tier Applicatie heeft een aantal belangrijke nadelen die kritiek zijn voor grote databases:
- Dit is geen transactie consistent operatie. De tabellen worden opeenvolgend geëxporteerd. Er is mogelijk een probleem met de externe sleutel. Dit is dubbel zo erg omdat je het pas ontdekt als je probeert te herstellen. Daarom moet u bij het uitvoeren van deze bewerking een momentopname van de database maken en de momentopname exporteren.
- Het duurt veel langer voor zowel exporteren als importeren. Op het moment dat u dringend een herstelactie moet uitvoeren, kunt u dit niet doen omdat het herstellen vanaf .bacpac enkele uren in beslag zal nemen.
- Exporteren kan de server aanzienlijk belasten, vooral voor grote tabellen, die, samen met het vorige punt, regelmatige back-ups tot een twijfelachtige beslissing maken.
Klassieke back-up gemaakt met het BACKUP DATABASE
commando heeft geen van deze nadelen, gebruik om ruimte te besparen Point-in-time recovery
Export \ Import data-tier applicatie kan worden beschouwd als een manier om alleen een back-up te maken voor kleine databases, in die gevallen waarin u geen toegang heeft tot het bestandssysteem. Exporteer in dit geval onder geen enkele omstandigheid de live database, zorg ervoor dat u een snapshot maakt voor een consistente export.
Answer
Nou, het grootste verschil is dat de gegevens zijn gecomprimeerd (met zip) voor het .bacpac
-bestand, wat niet het geval is met een normaal .bak
het dossier. Comprimeer gewoon het .bak
-bestand en zie dat het een stuk kleiner is;)