Сжатие резервных копий (SQL Server)Backup Compression (SQL Server)

В этом разделе описывается сжатие резервных копий 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 2008SQL Server 2008 и более поздней версии.Every edition of SQL Server 2008SQL Server 2008 and later can restore a compressed backup.

Преимущества Benefits

  • Так как сжатая резервная копия занимает меньше места, чем распакованная резервная копия тех же данных, для сжатия резервной копии обычно требуется меньше операций ввода-вывода какого-либо устройства, что обычно существенно повышает скорость резервного копирования.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:

  • В наборе носителей не допускается одновременное существование сжатых и несжатых резервных копий.Compressed and uncompressed backups cannot co-exist in a media set.

  • В предыдущих версиях SQL ServerSQL Server считывание сжатых резервных копий не поддерживается.Previous versions of SQL ServerSQL Server cannot read compressed backups.

  • Резервные копии NT не могут совместно использовать магнитные ленты со сжатыми резервными копиями SQL ServerSQL Server .NTbackups cannot share a tape with compressed SQL ServerSQL Server backups.

Воздействие сжатых резервных копий на производительность Performance Impact of Compressing Backups

По умолчанию сжатие существенно повышает загрузку ЦП. Дополнительная нагрузка на ЦП может помешать выполнению других операций.By default, compression significantly increases CPU usage, and the additional CPU consumed by the compression process might adversely impact concurrent operations. Поэтому может потребоваться создать сжатые резервные копии с низким приоритетом в сеансе, для которого использование ЦП ограничиваетсярегулятором ресурсов.Therefore, you might want to create low-priority compressed backups in a session whose CPU usage is limited byResource Governor. Дополнительные сведения см. ниже в подразделе Использование регулятора ресурсов для ограничения загрузки ЦП при сжатии резервной копии (Transact-SQL).For more information, see Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL).

В целях оптимизации производительности операций ввода-вывода резервной копии их можно изолировать от устройств или закрепить за устройствами в зависимости от оценки следующих видов счетчиков производительности.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, такие как счетчики физического использования дисков.Windows I/O performance counters, such as the physical-disk counters

  • Счетчик Пропускная способность устройства, байт/с объекта SQLServer:Backup DeviceThe Device Throughput Bytes/sec counter of the SQLServer:Backup Device object

  • Счетчик Пропускная способность резервного копирования и восстановления/с объекта SQLServer:DatabasesThe 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

Чтобы вычислить коэффициент сжатия резервной копии, используйте значения столбцов backup_size и compressed_backup_size из таблицы журнала backupset для резервной копии следующим образом: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. И наоборот, в базах данных, содержащих случайные значения или одну большую строку на странице, сжатые резервные копии будут практически такого же размера, что и несжатые резервные копии.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. Вследствие этого изначальный размер файла резервной копии, создаваемого компонентом Database Engine при резервном копировании базы данных со сжатием, определяется с помощью алгоритма предварительного выделения.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. Если для операции резервного копирования необходимо больше пространства, компонент Database Engine увеличивает размер файла.If more space is needed during the backup operation, the Database Engine grows the file. Если конечный размер меньше выделенного пространства, в конце операции резервного копирования компонент Database Engine сжимает файл до фактического конечного размера резервной копии.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).

См. также:See Also

Общие сведения о резервном копировании (SQL Server) Backup Overview (SQL Server)
Флаги трассировки (Transact-SQL)Trace Flags (Transact-SQL)