このトピックでは、制限、バックアップの圧縮のパフォーマンスのトレードオフ、バックアップ圧縮の構成、圧縮率など、SQL Server バックアップの圧縮について説明します。
注
バックアップ圧縮をサポートする SQL Server 2014 のエディションについては、「 SQL Server 2014 の各エディションでサポートされる機能」を参照してください。 SQL Server 2008 以降のすべてのエディションでは、圧縮されたバックアップを復元できます。
メリット
圧縮バックアップは同じデータの非圧縮バックアップよりも小さいため、通常、バックアップを圧縮する際に必要なデバイス I/O が少なくなるため、通常はバックアップ速度が大幅に向上します。
詳細については、このトピックの「 バックアップの圧縮によるパフォーマンスへの影響」を参照してください。
制約
圧縮されたバックアップには、次の制限が適用されます。
圧縮されたバックアップと圧縮されていないバックアップは、メディア セットに共存できません。
以前のバージョンの SQL Server では、圧縮されたバックアップを読み取ることができません。
NTbackups は、圧縮された SQL Server バックアップとテープを共有できません。
バックアップの圧縮によるパフォーマンスへの影響
既定の設定では、圧縮によって CPU 使用率が著しく増加し、圧縮処理によって CPU がさらに消費されるために、同時に実行される操作が悪影響を受ける場合があります。 そのため、リソース ガバナーによって CPU 使用率が制限されているセッションで、優先順位の低い圧縮バックアップを作成できます。 詳細については、「 リソース ガバナーを使用してバックアップ圧縮による CPU 使用率を制限する (Transact-SQL)」を参照してください。
バックアップ I/O のパフォーマンスを適切に把握するには、次の種類のパフォーマンス カウンターを評価することで、デバイス間でバックアップ I/O を分離できます。
物理ディスク カウンターなどの Windows I/O パフォーマンス カウンター
SQLServer:Backup Device オブジェクトのデバイス スループット バイト/秒カウンター
SQLServer:Databases オブジェクトのバックアップ/復元スループット/秒カウンター
Windows カウンターの詳細については、Windows のヘルプを参照してください。 SQL Server カウンターの使用方法については、「SQL Server オブジェクトの使用」を参照してください。
圧縮バックアップの圧縮率を計算する
バックアップの圧縮率を計算するには、次のように、バックアップ セット履歴テーブルのbackup_size列とcompressed_backup_size列のバックアップの値を使用します。
backup_size:compressed_backup_size
たとえば、3:1 圧縮率は、ディスク領域に約 66% を節約していることを示します。 これらの列に対してクエリを実行するには、次の Transact-SQL ステートメントを使用します。
SELECT backup_size/compressed_backup_size FROM msdb..backupset;
圧縮されたバックアップの圧縮率は、圧縮されたデータによって異なります。 さまざまな要因が、得られる圧縮率に影響を与える可能性があります。 主な要因は次のとおりです。
データの種類。
文字データは、他の種類のデータよりも圧縮されます。
ページ上の行間のデータの整合性。
通常、フィールドに同じ値が含まれる複数の行がページに含まれている場合、その値に対して大幅な圧縮が発生する可能性があります。 一方、ランダム なデータを含むデータベースや、1 ページに 1 つの大きな行のみを含むデータベースの場合、圧縮バックアップは圧縮されていないバックアップとほぼ同じ大きさになります。
データが暗号化されているかどうか。
暗号化されたデータは、同等の暗号化されていないデータよりも大幅に圧縮されます。 透過的なデータ暗号化を使用してデータベース全体を暗号化する場合、バックアップを圧縮しても、そのサイズが大幅に縮小されない可能性があります。
データベースが圧縮されているかどうか。
データベースが圧縮されている場合、バックアップを圧縮しても、そのサイズが大幅に縮小されない可能性があります (まったくの場合)。
バックアップ ファイルの領域の割り当て
圧縮バックアップの場合、最終的なバックアップ ファイルのサイズはデータの圧縮率によって異なります。バックアップ操作が完了する前に不明です。 そのため、既定では、圧縮を使用してデータベースをバックアップする場合、データベース エンジンはバックアップ ファイルに事前割り当てアルゴリズムを使用します。 このアルゴリズムでは、バックアップ ファイルのデータベース サイズに対する定義済みの割合が事前に割り当てられます。 バックアップ操作中に必要な領域が増える場合は、データベース エンジンによってファイルが拡張されます。 最終的なサイズが割り当てられた領域より小さい場合、バックアップ操作の最後に、データベース エンジンはファイルをバックアップの実際の最終サイズに圧縮します。
バックアップ ファイルが最終的なサイズに達するために必要なだけ拡張できるようにするには、トレース フラグ 3042 を使用します。 トレース フラグ 3042 により、バックアップ操作は既定のバックアップ圧縮事前割り当てアルゴリズムをバイパスします。 このトレース フラグは、圧縮されたバックアップに実際に必要なサイズだけを割り当てることによって、容量を節約する必要がある場合に便利です。 ただし、このトレース フラグを使用すると、パフォーマンスが若干低下する可能性があります (バックアップ操作の期間が長くなる可能性があります)。