Hvorfor er en .bacpac-fil så lille sammenlignet med en .bak-fil i den samme database?

Jeg har lavet sikkerhedskopier af mine SQL Server 2014 Express-databaser til import til andre servere og bemærket en forskel i filstørrelse mellem .bacpac og .bak.

Hvorfor er en .bacpac -fil så lille sammenlignet med en .bak fil i samme database?

Tak for enhver indsigt!

Svar

A

  • .bacpac file = Schema + Data. Bemærk, at data er BCP” redigeret ved hjælp af oprindeligt format (ikke kan læses af mennesker).

    • Du kan omdøbe .bacpac til .zip faktiske indhold.

    • Du kan bruge ...DAC\bin\sqlpackage.exe kommandolinjen til at udtrække .bacpac indhold programmatisk.

    • Det er et øjebliksbillede der inkluderer brugerdata + skema fra SQL Server eller Azure SQL Database.

  • Backup (har normalt .bak udvidelse) = En FULD databasesikkerhedskopi indeholder en komplet kopi af databasen og giver et enkelt tidspunkt, hvor databasen kan gendannes. En fuld sikkerhedskopi indeholder nogle transaktionslogoptegnelser, så den gendannede komponent (database, fil eller filgruppe) kan gøres transaktionelt konsistent.

En BACPAC er ikke en erstatning for en FULD backup. Det er kun et øjebliksbillede, der kan bruges til at flytte en database fra en server til en anden (eller til sky) og arkivering af en eksisterende database i et åbent format .

Fra min test nedenfor er resultaterne

indtast billedebeskrivelse her

Kommentarer

  • Logfilen er sandsynligvis den største årsag til størrelsesforskellen.
  • Jeg ' Jeg antager der ' er heller ingen indeksdata i .bacpac, hvilket sandsynligvis vil være en STOR bidragyder til filstørrelse.

Svar

En sikkerhedskopi oprettet via BACKUP DATABASE kommando (.bak) er en side-for-side-kopi af en database. Bemærk, at SQL Server-database ikke kun indeholder datasider. Der er også sider med indekser, der kan være store. Flere detaljer her

En sikkerhedskopi oprettet ved hjælp af Export Data-Tier Application (.bacpac) operation er simpelthen en eksporteret række fra en database i XML-format placeret i et arkiv. Du kan manuelt se indholdet af BACPAC, bare ændre udvidelsen af denne fil til .zip.

Størrelsen på .bacpac -filen er direkte proportional med antallet af poster i en database (under hensyntagen til kompressionsforholdet).

Størrelsen på .bak -filen afhænger ikke kun af dataene, men også af størrelsen på indekserne.

Nogle gange kan dette være et problem, tjek for eksempel denne gamle diskussion

Derfor er .bacpac filen er normalt mindre i størrelse.

Jeg kørte de enkleste tests med AdventureWorks -databasen og fik disse resultater.

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

Skal jeg bruge .bacpac til at reducere min backup-størrelse?

Nej.

Export \ Import Data Tier Application har flere væsentlige ulemper, der er kritiske for store databaser:

  1. Dette er ikke en transaktionskonsistent handling. Tabellerne eksporteres sekventielt. Der kan være et problem med den fremmede nøgle. Dette er dobbelt dårligt, fordi du kun opdager det, når du prøver at komme sig. Derfor skal du tage et øjebliksbillede af databasen og eksportere øjebliksbilledet, når du udfører denne handling.
  2. Det tager meget længere tid for både eksport og import. I det øjeblik, hvor du hurtigt har brug for at køre en gendannelse, vil du ikke være i stand til at gøre dette, fordi gendannelsen fra .bacpac vil tage flere timer at gennemføre.
  3. Eksport kan indlæse serveren betydeligt, især for store tabeller, der sammen med det foregående punkt gør regelmæssig sikkerhedskopiering til en tvivlsom beslutning.

Klassisk sikkerhedskopi oprettet ved hjælp af BACKUP DATABASE kommandoen er blottet for disse ulemper, for at spare plads skal du bruge Gendannelse af punkt i tid

Eksport \ Import data-tier-applikation kan betragtes som en måde at oprette en sikkerhedskopi til kun små databaser, i de tilfælde hvor du ikke har adgang til filsystemet. I dette tilfælde må du under ingen omstændigheder eksportere den levende database. Sørg for at oprette et øjebliksbillede til ensartet eksport.

Svar

Nå, den største forskel er, at data komprimeres (ved hjælp af zip) til .bacpac -filen, hvilket ikke er tilfældet med en normal .bak fil. Komprimer bare .bak -filen og se at den er meget mindre;)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *