Waarom is een .bacpac-bestand zo klein in vergelijking met een .bak-bestand van dezelfde database?

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

voer de beschrijving van de afbeelding hier in

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:

  1. 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.
  2. 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.
  3. 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;)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *