Proč je soubor .bacpac tak malý ve srovnání se souborem .bak stejné databáze?

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

    sem zadejte popis obrázku

    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:

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

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *