バックアップの圧縮 (SQL Server)
このトピックでは、バックアップの圧縮の制限、パフォーマンス面のトレードオフ、バックアップの圧縮の構成、圧縮比率など、 SQL Server バックアップの圧縮について説明します。
注意
SQL Server 2014 の各エディションがバックアップ圧縮をサポートする方法については、「SQL Server 2014 の各エディションでサポートされる機能」を参照してください。 圧縮されたバックアップは、 SQL Server 2008 以降の各エディションで復元できます。
メリット
圧縮されたバックアップは、同じデータの圧縮されていないバックアップよりも小さいため、バックアップを圧縮すると一般には必要なデバイス I/O が少なくなり、通常はバックアップの速度が大きく短縮されます。
詳細については、このトピックの「 バックアップの圧縮がパフォーマンスに与える影響」を参照してください。
制限
圧縮されたバックアップには次の制限が適用されます。
圧縮されたバックアップと圧縮されていないバックアップを 1 つのメディア セット内に共存させることはできません。
以前のバージョンの SQL Server では、圧縮されたバックアップを読み取ることができません。
圧縮された SQL Server バックアップのテープを複数の Ntbackup で共有することはできません。
バックアップの圧縮がパフォーマンスに与える影響
既定の設定では、圧縮によって CPU 使用率が著しく増加し、圧縮処理によって CPU がさらに消費されるために、同時に実行される操作が悪影響を受ける場合があります。 このため、リソース ガバナーによって CPU 使用率が制限されるセッションでは、優先度の低い圧縮バックアップを作成することができます。 詳細については、「リソース ガバナーを使用してバックアップの圧縮による CPU 使用率を制限する方法 (Transact-SQL)」を参照してください。
バックアップ I/O パフォーマンスの実態を把握するためには、次のようなパフォーマンス カウンターを評価することで、デバイスに対するバックアップ I/O を特定できます。
物理ディスク カウンターなどの Windows I/O パフォーマンス カウンター
SQLServer:Backup Device オブジェクトの Device Throughput Bytes/sec カウンター
SQLServer:Databases オブジェクトの Backup/Restore Throughput/sec カウンター
Windows カウンターの詳細については、Windows ヘルプを参照してください。 SQL Server カウンターの使用方法の詳細については、「 SQL Server オブジェクトの使用」をご覧ください。
圧縮されたバックアップの圧縮比率の計算
バックアップの圧縮比率を計算するには、 backupset 履歴テーブルの 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 つだけ含まれているデータベースの場合、圧縮されたバックアップは、圧縮されていないバックアップとそれほど変わらないサイズになります。
データが暗号化されているかどうか
暗号化されたデータは、暗号化されていない同等のデータより、圧縮比率が大幅に下がります。 透過的なデータ暗号化を使用してデータベース全体を暗号化すると、バックアップを圧縮しても、サイズが大幅に減少することはありません。
データベースが圧縮されているかどうか
データベースが圧縮されている場合、バックアップを圧縮しても、サイズが大幅に減少することはありません。
バックアップ ファイルの使用領域の割り当て
圧縮されたバックアップの場合、最終的なバックアップ ファイルのサイズは、データをどれくらい圧縮できるかによりますが、それはバックアップ操作が終了するまで不明です。 そのため、既定では、圧縮を使用してデータベースをバックアップする場合、データベース エンジンはバックアップ ファイルのために事前割り当てアルゴリズムを使用します。 このアルゴリズムでは、バックアップ ファイルに、データベースのサイズに対する定義済みの割合のサイズを事前に割り当てます。 バックアップ操作中に、より多くの領域が必要になった場合は、データベース エンジンによってファイルが拡張されます。 バックアップ操作の終了時の最終的なサイズが、割り当てられた領域のサイズを下回る場合は、データベース エンジンによってファイルがバックアップの実際の最終的なサイズに縮小されます。
バックアップ ファイルが、最終的なサイズに達するために必要な分だけを拡張できるようにするには、トレース フラグ 3042 を使用します。 トレース フラグ 3042 は、バックアップ操作が既定のバックアップ圧縮の事前割り当てアルゴリズムを使用しないようにします。 このトレース フラグは、圧縮されたバックアップに実際に必要なサイズだけを割り当てることによって、容量を節約する必要がある場合に便利です。 ただし、このトレース フラグを使用すると、わずかなパフォーマンスの低下 (バックアップ操作の期間が長くなる可能性) が発生することがあります。