バックアップの圧縮 (SQL Server)

このトピックでは、バックアップの圧縮の基礎を説明します。パフォーマンス面のトレードオフについても記載します。

バックアップ圧縮は SQL Server 2008 Enterprise で導入されました。SQL Server 2008 R2 以降、バックアップ圧縮は SQL Server 2008 R2 Standard 以上のエディションでサポートされています。圧縮されたバックアップは、SQL Server 2008 以降の各エディションで復元できます。

制限事項

圧縮されたバックアップには次の制限が適用されます。

  • 圧縮されたバックアップと圧縮されていないバックアップを 1 つのメディア セット内に共存させることはできません。

  • 以前のバージョンの SQL Server では、圧縮されたバックアップを読み取ることができません。

  • 圧縮された SQL Server バックアップのテープを複数の Ntbackup で共有することはできません。

バックアップの圧縮がパフォーマンスに与える影響

圧縮されたバックアップは、同じデータの圧縮されていないバックアップよりも小さいため、バックアップを圧縮すると一般には必要なデバイス I/O が少なくなり、通常はバックアップの速度が大きく短縮されます。

既定の設定では、圧縮によって 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 オブジェクトの使用」を参照してください。

構成

インストール時には、既定でバックアップ圧縮が無効になっています。バックアップ圧縮の既定の動作は、backup compression default オプション サーバー レベル構成オプションで定義されています。単一バックアップの作成時や、一連の定期的バックアップのスケジュール設定時には、サーバー レベルの既定値を上書きできます。

サーバー レベルの既定値を変更するには

backup compression default を上書きするには

バックアップ、バックアップ ジョブ、またはログ配布構成ごとにバックアップ圧縮動作を変更できます。

  • Transact-SQL

    特定のバックアップに対して、BACKUP ステートメントで、WITH NO_COMPRESSION または WITH COMPRESSION のどちらかを使用できます。

    ログ配布構成の場合は、sp_add_log_shipping_primary_databasesp_change_log_shipping_primary_database (Transact-SQL) を使用して、ログ バックアップのバックアップ圧縮動作を制御できます。

  • SQL Server Management Studio

    次のダイアログ ボックスのいずれかで [バックアップを圧縮する] または [バックアップを圧縮しない] を指定して、サーバーのバックアップ圧縮を上書きできます。

圧縮比率

バックアップの圧縮比率を計算するには、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;

SELECT backup_size/compressed_backup_size FROM msdb..backupset;

圧縮されたバックアップの圧縮比率は、圧縮対象のデータによって異なります。実際の圧縮比率は、さまざまな要因の影響を受けます。主な要因は次のとおりです。

  • データの型

    文字データは、他のデータ型よりも圧縮されます。

  • ページ上の各行のデータの一貫性

    一般に、ページ内の複数の行でフィールドに同じ値が格納されている場合、その値が大幅に圧縮される可能性があります。これに対して、ランダムなデータが格納されたデータベースや、各ページにサイズの大きい行が 1 つだけ含まれているデータベースの場合、圧縮されたバックアップは、圧縮されていないバックアップとそれほど変わらないサイズになります。

  • データが暗号化されているかどうか

    暗号化されたデータは、暗号化されていない同等のデータより、圧縮比率が大幅に下がります。透過的なデータ暗号化を使用してデータベース全体を暗号化すると、バックアップを圧縮しても、サイズが大幅に減少することはありません。

  • データベースが圧縮されているかどうか

    データベースが圧縮されている場合、バックアップを圧縮しても、サイズが大幅に減少することはありません。