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

Применимо к:SQL Server

В этой статье описывается сжатие резервных копий SQL Server, включая ограничения, компромисс производительности сжатия резервных копий, конфигурацию сжатия резервных копий и коэффициент сжатия. Сжатие резервных копий поддерживается в выпусках SQL Server: Enterprise, Standard и Developer. Каждый выпуск SQL Server 2008 (10.0.x) и более поздних версий может восстановить сжатое резервное копирование.

Льготы

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

    Дополнительные сведения см. в разделе "Влияние сжатия резервных копий" далее в этой статье.

Ограничения

К сжатым резервным копиям применяются следующие ограничения.

  • В наборе носителей не допускается одновременное существование сжатых и несжатых резервных копий.

  • Предыдущие версии SQL Server не могут считывать сжатые резервные копии.

  • NTbackups не могут совместно использовать ленту с сжатыми резервными копиями SQL Server.

Влияние на производительность сжатия резервных копий

По умолчанию сжатие существенно повышает загрузку ЦП. Дополнительная нагрузка на ЦП может помешать выполнению других операций. Поэтому может потребоваться создать сжатые резервные копии с низким приоритетом в сеансе, для которого использование ЦП ограничивается регулятором ресурсов. Дополнительные сведения см. в разделе Использование регулятора ресурсов для ограничения загрузки ЦП при сжатии резервной копии (Transact-SQL).

Начиная с SQL Server 2022 (16.x), можно использовать встроенную разгрузку и ускорение для сжатия резервных копий и разгрузки ресурсов ЦП для резервного копирования.

В целях оптимизации производительности операций ввода-вывода резервной копии их можно изолировать от устройств или закрепить за устройствами в зависимости от оценки следующих видов счетчиков производительности.

  • Счетчики производительности операций ввода-вывода Windows, такие как счетчики физического использования дисков.

  • Счетчик Пропускная способность устройства, байт/с объекта SQLServer:Backup Device

  • Счетчик Пропускная способность резервного копирования и восстановления/с объекта SQLServer:Databases

Сведения о счетчиках Windows см. в справке Windows. Сведения о работе со счетчиками SQL Server см. в разделе Использование объектов SQL Server.

Вычисление коэффициента сжатия сжатой резервной копии

Чтобы вычислить коэффициент сжатия резервной копии, используйте значения столбцов backup_size и compressed_backup_size из таблицы журнала backupset для резервной копии следующим образом:

backup_size:compressed_backup_size

Например, коэффициент сжатия 3:1 обозначает, что экономится около 66% места на диске. Чтобы запросить эти столбцы, можно выполнить следующую инструкцию Transact-SQL:

SELECT backup_size/compressed_backup_size FROM msdb..backupset;  

Коэффициент сжатия уже сжатой резервной копии зависит от подвергаемых сжатию данных. На полученный коэффициент сжатия оказывают влияние различные факторы. К основным факторам относятся следующие.

  • Тип данных.

    Символьные данные можно сжать сильнее, чем другие типы данных.

  • Согласованность данных в строках на странице.

    Как правило, если несколько строк на странице содержат одно и то же значение в каком-либо поле, для этого значения можно добиться существенного сжатия. И наоборот, в базах данных, содержащих случайные значения или одну большую строку на странице, сжатые резервные копии будут практически такого же размера, что и несжатые резервные копии.

  • Шифрование данных

    Зашифрованные данные подвергаются сжатию в значительно меньшей степени, чем незашифрованные. Например, если данные шифруются на уровне столбцов с помощью функции Always Encrypted или другого шифрования на уровне приложения, сжатие резервных копий может не дать существенного уменьшения размера.

    Дополнительные сведения о сжатии баз данных, зашифрованных с использованием прозрачного шифрования данных (TDE), см. в разделе Сжатие резервных копий с использованием TDE.

  • Сжатие базы данных.

    Если база данных уже сжата, сжатие резервных копий может лишь незначительно сократить размер или не сократить его вообще.

Сжатие резервных копий с использованием TDE

Начиная с SQL Server 2016 (13.x);, установка MAXTRANSFERSIZE на размер более 65536 (64 KB) включает оптимизированный алгоритм сжатия для баз данных с прозрачным шифрованием данных (TDE), который сначала расшифровывает страницу, сжимает ее, а затем зашифровывает снова. Если MAXTRANSFERSIZE не указан или при использовании MAXTRANSFERSIZE = 65536 (64 КБ) сжатие резервных копий в базах данных с включенным шифрованием TDE напрямую сжимает зашифрованные страницы и может не обеспечивать хорошее сжатие. Дополнительные сведения см. в разделе Сжатие резервных копий для баз данных с включенным шифрованием TDE.

Начиная с SQL Server 2019 (15.x) CU5, параметр MAXTRANSFERSIZE больше не требуется для включения этого оптимизированного алгоритма сжатия с TDE. Если команда резервного копирования указана WITH COMPRESSION или конфигурация сервера по умолчанию для сжатия резервных копий имеет значение 1, MAXTRANSFERSIZE автоматически увеличится до 128 КБ, чтобы включить оптимизированный алгоритм. Если в команде резервного копирования указано MAXTRANSFERSIZE со значением > 64 KБ, будет учитываться указанное значение. Иными словами, SQL Server никогда не будет автоматически уменьшать значение, а только увеличивать его. Если необходимо создать резервную копию зашифрованной базы данных TDE с MAXTRANSFERSIZE = 65536, необходимо указать WITH NO_COMPRESSION или убедиться, что в конфигурации сервера по умолчанию для сжатия резервных копий сервера задано значение 0.

Дополнительные сведения см. в разделе BACKUP (Transact-SQL).

Выделение места для файла резервной копии

При резервном копировании со сжатием конечный размер файла резервной копии зависит от степени сжимаемости исходных данных, которая становится известной только после окончания операции резервного копирования. Вследствие этого изначальный размер файла резервной копии, создаваемого компонентом Database Engine при резервном копировании базы данных со сжатием, определяется с помощью алгоритма предварительного выделения. Согласно данному алгоритму, размер создаваемого файла резервной копии соответствует стандартному проценту от размера базы данных. Если для операции резервного копирования необходимо больше пространства, компонент Database Engine увеличивает размер файла. Если конечный размер меньше выделенного пространства, в конце операции резервного копирования компонент Database Engine сжимает файл до фактического конечного размера резервной копии.

Флаг трассировки 3042 позволяет создать файл резервной копии минимального размера, с последующим увеличением при необходимости до конечного размера. При использовании флага трассировки 3042 операция резервного копирования не задействует алгоритм предварительного выделения пространства для резервной копии со сжатием. Этот флаг трассировки полезен для экономии пространства, так как выделяется только фактическое пространство, необходимое для резервной копии со сжатием. Однако, при использовании данного флага трассировки возможно небольшое уменьшение производительности (увеличение продолжительности операции резервного копирования).

Связанные задачи

Следующие шаги

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