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

Область применения: yesSQL Server (все поддерживаемые версии)

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

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

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

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

Ограничения

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

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

  • В предыдущих версиях SQL Server считывание сжатых резервных копий не поддерживается.

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

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

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

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

  • Счетчики производительности операций ввода-вывода 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 операция резервного копирования не задействует алгоритм предварительного выделения пространства для резервной копии со сжатием. Этот флаг трассировки полезен для экономии пространства, так как выделяется только фактическое пространство, необходимое для резервной копии со сжатием. Однако, при использовании данного флага трассировки возможно небольшое уменьшение производительности (увеличение продолжительности операции резервного копирования).

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

См. также:

Backup Overview (SQL Server)
Флаги трассировки (Transact-SQL)