同じデータベースの.bakファイルと比較して.bacpacファイルが非常に小さいのはなぜですか?

他のサーバーにインポートするためにSQLServer 2014 Expressデータベースのバックアップを実行していて、および.bak

.bacpacファイルが

同じデータベースのファイル?

洞察に感謝します!

回答

A

  • .bacpacファイル=スキーマ+データ。データはネイティブ形式を使用してBCP”出力されることに注意してください(人間が読み取り可能)。

    • .bacpacの名前を.zipに変更すると、実際の内容。

    • ...DAC\bin\sqlpackage.exe コマンドラインを使用して、.bacpacプログラムによるコンテンツ。

    • これはスナップショットユーザーデータとSQLServerまたはAzureSQLデータベースのスキーマが含まれます。

  • バックアップ(通常は.bak拡張子があります) =データベースの完全バックアップには、データベースの完全なコピーとデータベースを復元できる単一の時点を提供します。完全バックアップには、復元されたコンポーネント(データベース、ファイル、またはファイルグループ)のトランザクションの一貫性を保つために、いくつかのトランザクションログレコードが含まれています。

BACPACは完全バックアップの代わりにはなりません。データベースを1つのサーバーからに移動するために使用できる単なるスナップショットです。別の(またはクラウドへの)既存のデータベースをオープンフォーマットでアーカイブする

私のテストから、以下の結果が得られます

ここに画像の説明を入力

コメント

  • ログファイルがサイズの違いの最大の理由である可能性があります。
  • I ' dはそこにあると想定しています' .bacpacにもインデックスデータがありません。これは、ファイルサイズに大きく影響する可能性があります。

回答

コマンド(.bak)は、データベースのページごとのコピーです。 SQL Serverデータベースには、データページだけではないことに注意してください。インデックスが大きくなる可能性のあるページもあります。詳細こちら

エクスポートデータ層アプリケーション(.bacpac)を使用して作成されたバックアップ操作は、アーカイブに配置されたXML形式でデータベースからエクスポートされた行です。 BACPACの内容を手動で表示できます。このファイルの拡張子を.zipに変更するだけです。

ファイルはデータベース内のレコード数に正比例します(圧縮率を考慮)。

.bakファイルのサイズは、データだけでなく、インデックスのサイズにも依存します。

これが問題になる場合があります。たとえば、この古いディスカッション

を確認してください。したがって、.bacpacファイルは通常サイズが小さいです。

AdventureWorks データベースを使用して最も簡単なテストを実行し、これらの結果。

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

バックアップサイズを減らすために.bacpacを使用する必要がありますか?

いいえ。

エクスポート\インポートデータ層アプリケーションには、大規模なデータベースにとって重要ないくつかの重大な欠点があります。

  1. これはトランザクション的に一貫した操作ではありません。テーブルは順番にエクスポートされます。外部キーに問題がある可能性があります。あなたが回復しようとしたときにのみそれを発見するので、これは二重に悪いです。したがって、この操作を実行するときは、データベースのスナップショットを作成し、スナップショットをエクスポートする必要があります。
  2. エクスポートとインポートの両方にはるかに長い時間がかかります。緊急に復元を実行する必要がある場合、.bacpacからの復元が完了するまでに数時間かかるため、これを実行することはできません。
  3. エクスポートは、特に大規模な場合、サーバーに大きな負荷をかける可能性があります。前のポイントと一緒に、定期的なバックアップを疑わしい決定にするテーブル。

BACKUP DATABASEコマンドを使用して作成されたクラシックバックアップには、スペースを節約するためにポイントインタイムリカバリ

エクスポート\インポートデータ層アプリケーションは、アクセス権がない場合に、小さなデータベースに対してのみバックアップを作成する方法と見なすことができます。 ファイルシステム。 この場合、いかなる状況でもライブデータベースをエクスポートしないでください。一貫性のあるエクスポートのために、必ずスナップショットを作成してください。

回答

まあ、最大の違いは、.bacpacファイルのデータが(zipを使用して)圧縮されることです。これは、通常の.bakの場合とは異なります。 ファイル。 .bakファイルを圧縮して、ファイルがはるかに小さいことを確認してください;)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です