Prováděl jsem zálohy svých databází SQL Server 2014 Express pro import na jiné servery a všiml jsem si rozdílu ve velikosti souboru mezi .bacpac
a .bak
.
Proč je soubor .bacpac
tak malý ve srovnání s .bak
soubor stejné databáze?
Děkujeme za všechny postřehy!
Odpovědět
A
-
.bacpac
file = Schema + Data. Upozorňujeme, že data jsou BCP, vydána v nativním formátu (nikoli čitelné člověkem).-
.bacpac
můžete přejmenovat na.zip
a zobrazit skutečný obsah. -
K extrahování ůžete použít
...DAC\bin\sqlpackage.exe
. div id = „db4f68eb4a“>
-
obsah programově.
Je to snímek který zahrnuje uživatelská data + schéma ze serveru SQL Server nebo Azure SQL Database.
–
- Záloha (obvykle má
.bak
rozšíření) = Úplná záloha databáze obsahuje úplnou kopii databáze a poskytuje jediný bod v čase, do kterého lze databázi obnovit. Úplná záloha obsahuje některé záznamy protokolu transakcí, aby bylo možné obnovit obnovenou komponentu (databáze, soubor nebo skupina souborů) transakčně konzistentní.
A BACPAC
nenahrazuje CELOU zálohu. Je to jen snímek, který lze použít k přesunutí databáze z jednoho serveru na jiné (nebo do cloudu) a archivace existující databáze v otevřeném formátu .
Z mého testu jsou níže výsledky
Komentáře
- Soubor protokolu je pravděpodobně největším důvodem rozdílu ve velikosti.
- I ' předpokládám, že ' ani v souboru .bacpac nejsou žádná indexová data, což pravděpodobně bude velkým přispěvatelem k velikosti souboru.
Odpovědět
Záloha vytvořená pomocí BACKUP DATABASE
příkaz (.bak
) je kopie databáze po stránkách. Všimněte si, že databáze serveru SQL obsahuje nejen datové stránky. Existují také stránky s indexy, které mohou být velké. Více podrobností zde
Záloha vytvořená pomocí aplikace Export Data-Tier (.bacpac
) operace je jednoduše exportované řádky z databáze ve formátu XML umístěné v archivu. Obsah BACPAC můžete zobrazit ručně, stačí změnit příponu tohoto souboru na .zip.
Velikost .bacpac
soubor je přímo úměrný počtu záznamů v databázi (s přihlédnutím k kompresnímu poměru).
Velikost souboru .bak
závisí nejen na datech, ale také na velikosti indexů.
Někdy to může být problém, zkontrolujte například tuto starou diskusi
Proto je .bacpac
soubor má obvykle menší velikost.
Spustil jsem nejjednodušší testy s databází AdventureWorks a dostal tyto výsledky.
AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb
Mám ke zmenšení zálohy použít soubor .bacpac?
Č.
Aplikace Export \ Import Data Tier má několik významných nevýhod, které jsou zásadní pro velké databáze:
- Toto není transakčně konzistentní operace. Tabulky se exportují postupně. Může se jednat o problém s cizím klíčem. To je dvojnásob špatné, protože to objevíte, až když se pokusíte zotavit. Proto při provádění této operace musíte pořídit snímek databáze a snímek exportovat.
- Export i import trvá mnohem déle. V okamžiku, kdy nutně potřebujete spustit obnovení, to nebudete moci provést, protože obnovení z .bacpac bude trvat několik hodin.
- Export může významně načíst server, zejména u velkých tabulky, což spolu s předchozím bodem činí z pravidelného zálohování pochybné rozhodnutí.
Klasická záloha vytvořená pomocí příkazu BACKUP DATABASE
tyto nevýhody postrádá, pro úsporu místa použijte Obnova typu point-in-time
Export \ Import datové vrstvy lze považovat za způsob vytvoření zálohy pouze pro malé databáze, v případech, kdy nemáte přístup k souborový systém. V takovém případě neexportujte živou databázi za žádných okolností, nezapomeňte vytvořit snímek pro konzistentní export.
Odpovědět
Největší rozdíl je v tom, že data jsou komprimována (pomocí zipu) pro soubor .bacpac
, což u běžného .bak
neplatí soubor. Stačí zkomprimovat soubor .bak
a zjistit, že je mnohem menší;)