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

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、バックアップの圧縮の制限、パフォーマンス面のトレードオフ、バックアップの圧縮の構成、圧縮比率など、 SQL ServerSQL Server バックアップの圧縮について説明します。This topic describes the compression of SQL ServerSQL Server backups, including restrictions, performance trade-off of compressing backups, the configuration of backup compression, and the compression ratio. バックアップの圧縮は、 SQL Server 2017SQL Server 2017 エディションの Enterprise、Standard、および Developer でサポートされています。Backup compression is supported on SQL Server 2017SQL Server 2017 editions: Enterprise, Standard, and Developer. 圧縮されたバックアップは、 SQL Server 2008:SQL Server 2008 以降の各エディションで復元できます。Every edition of SQL Server 2008:SQL Server 2008 and later can restore a compressed backup.

利点Benefits

  • 圧縮されたバックアップは、同じデータの圧縮されていないバックアップよりも小さいため、バックアップを圧縮すると一般には必要なデバイス I/O が少なくなり、通常はバックアップの速度が大きく短縮されます。Because a compressed backup is smaller than an uncompressed backup of the same data, compressing a backup typically requires less device I/O and therefore usually increases backup speed significantly.

    詳細については、このトピックの「 バックアップの圧縮がパフォーマンスに与える影響」を参照してください。For more information, see Performance Impact of Compressing Backups, later in this topic.

制限Restrictions

圧縮されたバックアップには次の制限が適用されます。The following restrictions apply to compressed backups:

  • 圧縮されたバックアップと圧縮されていないバックアップを 1 つのメディア セット内に共存させることはできません。Compressed and uncompressed backups cannot co-exist in a media set.

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

  • 圧縮された SQL ServerSQL Server バックアップのテープを複数の Ntbackup で共有することはできません。NTbackups cannot share a tape with compressed SQL ServerSQL Server backups.

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

既定の設定では、圧縮によって CPU 使用率が著しく増加し、圧縮処理によって CPU がさらに消費されるために、同時に実行される操作が悪影響を受ける場合があります。By default, compression significantly increases CPU usage, and the additional CPU consumed by the compression process might adversely impact concurrent operations. このため、リソース ガバナーによって CPU 使用率が制限されるセッションでは、優先度の低い圧縮バックアップを作成することができます。Therefore, you might want to create low-priority compressed backups in a session whose CPU usage is limited byResource Governor. 詳細については、このトピックの「 リソース ガバナーを使用してバックアップの圧縮による CPU 使用率を制限する方法 (Transact-SQL)によって CPU 使用率が制限されるセッションでは、優先度の低い圧縮バックアップを作成することができます。For more information, see Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL).

バックアップ I/O パフォーマンスの実態を把握するためには、次のようなパフォーマンス カウンターを評価することで、デバイスに対するバックアップ I/O を特定できます。To obtain a good picture of your backup I/O performance, you can isolate the backup I/O to or from devices by evaluating the following sorts of performance counters:

  • 物理ディスク カウンターなどの Windows I/O パフォーマンス カウンターWindows I/O performance counters, such as the physical-disk counters

  • SQLServer:Backup Device オブジェクトの Device Throughput Bytes/sec カウンターThe Device Throughput Bytes/sec counter of the SQLServer:Backup Device object

  • SQLServer:Databases オブジェクトの Backup/Restore Throughput/sec カウンターThe Backup/Restore Throughput/sec counter of the SQLServer:Databases object

Windows カウンターの詳細については、Windows ヘルプを参照してください。For information about Windows counters, see Windows help. SQL Server カウンターの使用方法の詳細については、「 SQL Server オブジェクトの使用」をご覧ください。For information about how to work with SQL Server counters, see Use SQL Server Objects.

圧縮されたバックアップの圧縮比率の計算Calculate the Compression Ratio of a Compressed Backup

バックアップの圧縮比率を計算するには、 backupset 履歴テーブルの backup_size 列と compressed_backup_size 列にある値を次のように使用します。To calculate the compression ratio of a backup, use the values for the backup in the backup_size and compressed_backup_size columns of the backupset history table, as follows:

backup_size:compressed_backup_sizebackup_size:compressed_backup_size

たとえば、圧縮比率が 3:1 の場合、ディスク領域を約 66% 節約できることを意味します。For example, a 3:1 compression ratio indicates that you are saving about 66% on disk space. これらの列に対するクエリを実行するには、次の Transact-SQL ステートメントを使用できます。To query on these columns, you can use the following Transact-SQL statement:

SELECT backup_size/compressed_backup_size FROM msdb..backupset;  

圧縮されたバックアップの圧縮比率は、圧縮対象のデータによって異なります。The compression ratio of a compressed backup depends on the data that has been compressed. 実際の圧縮比率は、さまざまな要因の影響を受けます。A variety of factors can impact the compression ratio obtained. 主な要因は次のとおりです。Major factors include:

  • データの型The type of data.

    文字データは、他のデータ型よりも圧縮されます。Character data compresses more than other types of data.

  • ページ上の各行のデータの一貫性The consistency of the data among rows on a page.

    一般に、ページ内の複数の行でフィールドに同じ値が格納されている場合、その値が大幅に圧縮される可能性があります。Typically, if a page contains several rows in which a field contains the same value, significant compression might occur for that value. これに対して、ランダムなデータが格納されたデータベースや、各ページにサイズの大きい行が 1 つだけ含まれているデータベースの場合、圧縮されたバックアップは、圧縮されていないバックアップとそれほど変わらないサイズになります。In contrast, for a database that contains random data or that contains only one large row per page, a compressed backup would be almost as large as an uncompressed backup.

  • データが暗号化されているかどうかWhether the data is encrypted.

    暗号化されたデータは、暗号化されていない同等のデータより、圧縮比率が大幅に下がります。Encrypted data compresses significantly less than equivalent unencrypted data. 透過的なデータ暗号化を使用してデータベース全体を暗号化すると、バックアップを圧縮しても、サイズが大幅に減少することはありません。If transparent data encryption is used to encrypt an entire database, compressing backups might not reduce their size by much, if at all.

  • データベースが圧縮されているかどうかWhether the database is compressed.

    データベースが圧縮されている場合、バックアップを圧縮しても、サイズが大幅に減少することはありません。If the database is compressed, compressing backups might not reduce their size by much, if at all.

バックアップ ファイルの使用領域の割り当てAllocation of Space for the Backup File

圧縮されたバックアップの場合、最終的なバックアップ ファイルのサイズは、データをどれくらい圧縮できるかによりますが、それはバックアップ操作が終了するまで不明です。For compressed backups, the size of the final backup file depends on how compressible the data is, and this is unknown before the backup operation finishes. そのため、既定では、圧縮を使用してデータベースをバックアップする場合、データベース エンジンはバックアップ ファイルのために事前割り当てアルゴリズムを使用します。Therefore, by default, when backing up a database using compression, the Database Engine uses a pre-allocation algorithm for the backup file. このアルゴリズムでは、バックアップ ファイルに、データベースのサイズに対する定義済みの割合のサイズを事前に割り当てます。This algorithm pre-allocates a predefined percentage of the size of the database for the backup file. バックアップ操作中に、より多くの領域が必要になった場合は、データベース エンジンによってファイルが拡張されます。If more space is needed during the backup operation, the Database Engine grows the file. バックアップ操作の終了時の最終的なサイズが、割り当てられた領域のサイズを下回る場合は、データベース エンジンによってファイルがバックアップの実際の最終的なサイズに縮小されます。If the final size is less than the allocated space, at the end of the backup operation, the Database Engine shrinks the file to the actual final size of the backup.

バックアップ ファイルが、最終的なサイズに達するために必要な分だけを拡張できるようにするには、トレース フラグ 3042 を使用します。To allow the backup file to grow only as needed to reach its final size, use trace flag 3042. トレース フラグ 3042 は、バックアップ操作が既定のバックアップ圧縮の事前割り当てアルゴリズムを使用しないようにします。Trace flag 3042 causes the backup operation to bypass the default backup compression pre-allocation algorithm. このトレース フラグは、圧縮されたバックアップに実際に必要なサイズだけを割り当てることによって、容量を節約する必要がある場合に便利です。This trace flag is useful if you need to save on space by allocating only the actual size required for the compressed backup. ただし、このトレース フラグを使用すると、わずかなパフォーマンスの低下 (バックアップ操作の期間が長くなる可能性) が発生することがあります。However, using this trace flag might cause a slight performance penalty (a possible increase in the duration of the backup operation).

関連タスクRelated Tasks

参照See Also

バックアップの概要 (SQL Server) Backup Overview (SQL Server)
トレース フラグ (Transact-SQL)Trace Flags (Transact-SQL)