В SQL Server 2008 Enterprise Edition в команду резервного копирования T-SQL была добавлена опция сжатия резервных копий, в команде для этого нужно прописать WITH COMPRESSION. Эта опция обеспечивает возможность сжатия для всех типов потокового резервного копирования SQL Server — полного, разностного и копий журнала транзакций. Инструкция RESTORE распаковывает сжатые файлы резервной копии используя метаданные в заголовке файла копии. Сжатие данных в резервных копиях выгодно по двум причинам: во-первых, файлы резервных копий будут занимать меньше места, а во-вторых, поскольку передается меньше байтов, резервное копирование выполняется быстрее, чем для несжатых резервных копий. По умолчанию в SQL Server резервные копии не сжимаются, но многие меняют это значение по умолчанию сразу глобально, используя sp_configure.
Большинство вполне устраивает текущий алгоритм сжатия, однако многие сталкиваются с тем, что коэффициенты сжатия часто оказывается слишком низки, чтобы оправдать дополнительные вычислительные затраты, необходимые для сжатия файлов резервных копий.
Кроме того, не всегда удаётся выделить вычислительные ресурсы для задачи сжатия. Многие клиенты в больших задачах OLTP вынуждены подвергать риску свою стратегию непрерывности бизнеса и аварийного восстановления, откладывая время создания регулярных копий, чтобы не мешать работе во время основной нагрузки.
Технология Intel® QuickAssist (Intel QAT) в SQL Server 2022 призвана решить эти проблемы, обеспечивая аппаратное ускорение и возможности разгрузки процессоров от дополнительных функций сжатия и распаковки. Использование этой технологии даёт заметное снижение нагрузки на процессоры, времени создания резервных копий, а также уменьшает занимаемое под хранение копий место.
Интерфейс для аппаратных устройств Intel QAT использует программную библиотеку QATzip, которая обеспечивает поддержку резервирования. Она позволяет администраторам оперативно добавлять/удалять устройства, обеспечивать программное сжатие, и лучше помогает при восстановлении после аппаратных сбоев.
В SQL Server 2022 интегрированы возможности сжатия/распаковки с помощью библиотеки QATzip и связанной с ней библиотеки Intel Intelligent Storage Acceleration Library (ISA-L). Intel ISA-L устанавливается вместе с QATzip, и наличие их является необходимым условием для включения аппаратного ускорения Intel QAT на уровне экземпляра.
QATzip в настоящее время поддерживает передачу нагрузки резервного копирования на мощности периферийного аппаратного устройства в виде адаптера PCIe, либо на встроенный чипсет, а если этого нет, может обеспечивать программное сжатие по тем же алгоритмам.
Синтаксис T-SQL для команды BACKUP DATABASE в SQL Server 2022 был расширен, и теперь позволяет администраторам баз данных выбрать новый алгоритм для сжатия резервных копий.
Кроме того, доступен параметр конфигурации sp_configure для настройки параметров сжатия резервных копий по умолчанию, а также добавлено новое динамическое административное представление для запроса состояния конфигурации.
Реализация этой функции обеспечивает логирование ошибок и информационных сообщений в журнале ошибок, для облегчения поиска и устранения неполадок в конфигурации Intel QAT. Выигрыш от нового функционала сжатия Intel QAT можно отследить во времени, просматривая историю использования алгоритма сжатия в базе данных msdb.
Кому пригодиться сжатие резервных копий с помощью Intel QAT
Наибольшую выгоду от Intel QAT получат те, у кого на базы высокая нагрузка, как бывает у критически важных OLTP и OLAP приложений, а также когда стратегия восстановления данных должна удовлетворять жёстким требованиям SLA. Зачастую это поможет найти баланс между поддержкой высокой нагрузки и гарантией обеспечения высоких требований к стратегии восстановления данных.
Часто эти приложения имеют высокую степень виртуализации и используют экземпляры SQL Server загруженные по всем статьям практически на 100-процентов, чтобы максимизировать инвестиции в лицензирование оборудования и программного обеспечения.
Описание драйвера Intel QAT
Необходимые драйверы Intel можно загрузить на странице поддержки Intel QuickAssist (недоступно из РФ). Там же будет представлен обзор Intel QAT, список версий драйверов для каждой операционной системы и примечания к версиям этих драйверов. Драйвера устанавливаются отдельно от SQL Server 2022. В качестве основных операционных систем поддерживаются Windows Server 2016, Windows Server 2019 и Windows Server 2022. Драйверы можно устанавливать перед установкой SQL Server 2022, для обеспечения этих возможностей восстановления после аварий, а лучше даже в составе унифицированного набора системных компонент. Можно установить их и после SQL Server 2022, и даже без оборудования QAT. В любом случае, необходимо обеспечить наличие актуальной версии драйвера.
Подготовка сервера для Intel QAT
Библиотеку QATzip можно установить на сервер, на котором не установлены устройства аппаратного ускорения QAT (виртуальные или физические). В таких случаях SQL Server все равно будет загружать сборку QATZip.dll если включена опция HARDWARE_OFFLOAD с помощью команды ALTER SERVER CONFIGURATION. В этом сценарии пользователи могут указать в качестве алгоритма сжатия QAT_DEFLATE
, что обеспечит использование программного обеспечения, предоставляемого Intel ISA-L, для резервного копирования со сжатием в том же формате и кодировке, которые используются устройствами QAT.
Ниже приведены ссылки на поддерживаемую в момент написания статьи версию драйвера Windows Server, примечания к выпуску Intel QAT и главную страницу Intel QAT, которая будет использоваться в качестве основного места входа для поддержки Intel QAT.
Intel® QuickAssist Technology landing page (недоступно из РФ)
Intel® QuickAssist Technology Driver for Windows (недоступно из РФ)
Intel® QuickAssist Technology Driver release notes (недоступно из РФ)
Редакции SQL Server 2022 поддерживающие Intel QAT
Уровень поддержки Intel QAT в разных редакциях SQL Server 2022 отличается. В SQL Server 2022 Enterprise Edition будет доступно аппаратное сжатие, если установлена и работоспособна плата Intel QAT, в противном случае используется программное сжатие. SQL Server 2022 Standard Edition поддерживает резервное копирование только с программным сжатием Intel QAT, даже если нужная плата установлена. SQL Server 2022 Express Edition позволит восстанавливать резервные копии Intel QAT, но резервное копирование возможно только с использованием алгоритма по умолчанию MS_XPRESS.
Примечание: для выполнения резервного копирования и восстановления с использованием функций Intel QAT необходимо установить драйверы Intel QAT.
Настройка SQL Server 2022 для сжатия резервных копий с Intel QAT
Для резервного копирования баз данных с помощью алгоритма сжатия Intel QAT необходимо установить соответствующие драйверы, а затем разрешить SQL Server загружать драйверы в адресное пространство процессов SQL Server 2022.
Для выполнения этой задачи в синтаксис команды ALTER SERVER CONFIGURATION в SQL Server 2022 добавлен новый параметр HARDWARE_OFFLOAD, позволяющий включать или выключать использование аппаратного сжатия на уровне экземпляра SQL Server. При применении этой конфигурации и после перезапуска службы SQL Server технология аппаратного сжатия Intel QAT будет использоваться в качестве дополнительного алгоритма сжатия резервных копий.
Примечание: Для вступления в силу опции HARDWARE_OFFLOAD
требуется перезапуск экземпляра SQL Server.
После включения этой функции при каждом запуске службы SQL Server её процесс будет искать необходимую программную библиотеку, которая взаимодействует с API драйвера платы сжатия, и загружает соответствующие сборки, если они доступны. Библиотекой Intel QAT является QATzip
и она предоставляет набор необходимых для сжатия функций. QATzip — это API который может взаимодействовать с драйвером ядра QAT. Он используется для сжатия или распаковки файлов с помощью одной или нескольких плат QAT.
В операционной системы Windows для QATzip имеется дополнительная библиотека Intel® Intelligent Storage Acceleration Library (ISA-L). Она заменяет QATzip в случае отказа плат, или становится альтернативным программным вариантом сжатия, когда оборудование недоступно.
Примечание: Отсутствие платы QAT не помешает экземплярам SQL выполнять операции резервного копирования или восстановления с использованием нового алгоритма QAT_DEFLATE. Для программного сжатия или распаковки с использованием Intel ISA-L по-прежнему требуется чтобы была установлена библиотека QATzip и чтобы в конфигурации сервера опцией HARDWARE_OFFLOAD была включена поддержка QAT. Это связано с тем, что SQL Server только после загрузки сборки QATzip.dll может обеспечить переключение на Intel ISA-L. Всё это также позволяет в SQL Server 2022 Standard Edition использовать программное сжатие по новым алгоритмам, а для SQL Server Enterprise Edition 2022 можно будет задействовать платы аппаратного сжатия для разгрузки серверных ресурсов при создании резервных копий.
Включение сжатия копий Intel QAT
Для получения или отключения доступа к устройствам QAT используется оператор ALTER SERVER CONFIGURATION. Использование инструкции HARDWARE_OFFLOAD, как показано ниже, немного повлияет на время загрузки SQL Server, поскольку понадобиться загрузить ещё и двоичные файлы QAT.
ALTER SERVER CONFIGURATION
SET HARDWARE_OFFLOAD = ON (ACCELERATOR = QAT)
После выполнения этой инструкции необходимо перезапустить службу SQL Server, чтобы двоичные файлы QAT загрузились в адресное пространство процесса SQL Server.
Примечание: в конфигурации по умолчанию используется сжатие по алгоритму Microsoft - MS_XPRESS.
Приведенная ниже инструкция отключает функцию Intel QAT для SQL Server 2022:
ALTER SERVER CONFIGURATION
SET HARDWARE_OFFLOAD = OFF (ACCELERATOR = QAT)
Конфигурация аппаратного сжатия для реплик групп доступности
Задаваемый на уровне сервера параметр конфигурации HARDWARE_OFFLOAD можно использовать с группами доступности. Если этот параметр включен на первичной реплике, он будет оставаться действительным на уровне кластера Always ON. При переходе с первичной на вторичную реплику будет предпринята попытка загрузить сборки аппаратного сжатия на новую первичную реплику. Рекомендуется после установки последних версий драйверов Intel QAT на каждую реплику, включить соответствующие настройки на всех этих репликах.
Проверка конфигурации Intel QAT
Для проверки настроек сжатия Intel QAT можно использовать новое DMV sys.dm_server_accelerator_status, sp_configure, представление каталога sys.configurations и журнал ошибок SQL Server 2022.
Динамическое административное представление sys.dm_server_accelerator_status является основным методом проверки состояния конфигурации Intel QAT. Оно позволяет проверить, включено ли аппаратное сжатие и в каком режиме оно используется.
Пример:
SELECT * FROM sys.dm_server_accelerator_status
GO
Для проверки конфигурации Intel QAT можно использовать динамическое административное представление sys.dm_server_hardware_offload_config, которое значительно упростит вам проверку используемых аппаратных ускорителей, библиотеки которых были загружены в адресное пространство процесса SQL Server.
Пример:
SELECT * FROM sys.dm_server_hardware_offload_config
GO
Процедура sp_configure и представление каталога sys.configurations позволяют задавать и контролировать в SQL Server установки по умолчанию для сжатия резервных копий. Используя sp_configure можно включить или отключить аппаратное сжатие, задать сжатие резервных копий по умолчанию, а также изменить алгоритм сжатия, который будет использоваться по умолчанию. После изменения конфигурации сервера по умолчанию статус этих опций будет отражен в таблице sys.configurations
.
Чтобы узнать состояние сжатия резервных копий по умолчанию, вы можете использовать запрос ниже:
SELECT * FROM sys.configurations
WHERE name = 'backup compression default';
Для изменения конфигурации на уровне сервера нужно воспользоваться хранимой процедурой sys.sp_configure.
Пример:
EXEC sp_configure 'backup compression default', 1;
RECONFIGURE;
Чтобы это изменение вступило в силу, перезапуска SQL Server не требуется. Когда значение этого параметра сжатия по умолчанию будет изменено на 1 (т. е. WITH COMPRESSION), алгоритм сжатия резервных копий продолжит оставаться таким, как он был «из коробки» - MS_XPRESS (если он не был ещё изменен).
Чтобы определить, является ли Intel QAT был для SQL Server алгоритмом сжатия по умолчанию, выполните следующий запрос:
SELECT * FROM sys.configurations
WHERE name = 'backup compression algorithm';
Если сжатие резервных копий включено, будет учитываться глобальная опция sp_configure, отвечающая за включение/отключение аппаратного сжатия.
Примечание: опция может принимать значения 0 или 1, а для вступления в силу потребуется перезагрузка.
sp_configure 'hardware offload enabled', 0
GO
Создание резервной копии с использованием сжатия QAT.
В команду T-SQL BACKUP WITH COMPRESSION
были дополнены варианты выбора алгоритма сжатия резервных копий. Если SQL Server доступны драйверы Intel QAT и выполнены необходимые настройки, появляется возможность использования для сжатия резервных копий алгоритм QAT_DEFLATE
, который как раз и инициирует сжатие резервных копий средствами Intel QAT.
Примечание. Стандартный алгоритм сжатия называться MS_EXPRESS
и он изначально является алгоритмом сжатия по умолчанию.
Команда ALGORITHM
нужна для указания одного из этих двух возможных алгоритмов ( QAT_DEFLATE
, MS_EXPRESS
) сжатия резервных копий.
В приведенном ниже примере будет выполнено сжатие резервной копии с использованием аппаратного ускорения Intel QAT:
BACKUP DATABASE testdb TO DISK='D:\Backups\testdb.bak'
WITH COMPRESSION (ALGORITHM = QAT_DEFLATE);
Любой из представленных ниже примеров будет использовать обычный механизм сжатия, выбираемый по умолчанию - MS_XPRESS.
BACKUP DATABASE testdb TO DISK='D:\Backups\testdb.bak'
WITH COMPRESSION (ALGORITHM = MS_XPRESS);
BACKUP DATABASE testdb TO DISK='D:\Backups\testdb.bak'
WITH COMPRESSION;
В таблице ниже представлена сводная информация об использовании в SQL Server 2022 команды BACKUP DATABASE с разными параметрами COMPRESSION.
BACKUP STATEMENT |
ОБЗОР |
|
Резервное копирование без сжатия или со сжатием в зависимости от настроек по умолчанию. |
|
Резервное копирование с использованием алгоритма сжатия XPRESS. |
|
Резервное копирование со сжатием по алгоритму XPRESS. |
|
Резервное копирование со сжатием с использованием библиотеки QATZip по алгоритму QZ_DEFLATE_GZIP_EXT с уровнем сжатия 1. |
Восстановление из резервной копии в SQL Server 2022
Команда RESTORE не использует опцию COMPRESSION, поскольку метаданные заголовка резервной копии содержат информацию о том, сжата ли копия базы данных, и каким алгоритмом. Следовательно, движок сервера может соответствующим образом восстановить ее из файла(ов) резервной копии. Метаданные резервной копии теперь дополнены информацией о типе сжатия.
Примеры команды RESTORE HEADERONLY для резервной копии со сжатием QAT_DEFLATE и резервной копии, сжатой с помощью алгоритма MS_XPRESS (по умолчанию), представлены ниже:
RESTORE HEADERONLY FROM DISK=’C:\temp\QAT-DEFLATE.bak’
GO
RESTORE HEADERONLY FROM DISK=’C:\temp\MS-XPRESS.bak’
GO
Резервные копии, сжатые с помощью QAT_DEFLATE или MS_XPRESS, а также несжатые резервные копии будут использовать одинаковый синтаксис T-SQL команды RESTORE DATABASE.
В SQL Server 2022 команда RESTORE HEADERONLY вместе с другой информацией покажет использованный при создании копии алгоритм сжатия, а также имя резервной копии, описание резервной копии, тип резервной копии, состояние сжатия, тип устройства и другие сведения.
В приведенном ниже примере инструкции T-SQL синтаксис команды восстановления применим для восстановления из файла резервной копии testdb.bak, независимо от того, является ли он несжатой или сжатой резервной копией, созданной с помощью алгоритма QAT_DEFLATE или MS_XPRESS.
RESTORE DATABASE testdb FROM DISK=’E:\Backups\testdb.bak’ WITH RECOVERY;
Резервные копии SQL Server, сжатые с помощью QAT_DEFLATE, можно будет восстановить с использованием всех имеющихся операторов RESTORE {DATABASE|LOG} и всех аргументов команды восстановления, таких как: WITH MOVE, PARTIAL, STOPAT, KEEP REPLICATION, KEEP CDC и RESTRICTED_USER.
Также для всех алгоритмов сжатия резервных копий будут поддерживаться и вспомогательные команды: RESTORE FILELISTONLY, RESTORE HEADERONLY, RESTORE VERIFYONLY и другие.
Примечание. Если параметр конфигурации HARDWARE_OFFLOAD на уровне сервера не включен и/или не установлены драйверы Intel QAT, попытка восстановления будет прервана ошибкой.
Чтобы восстановить резервную копию, сжатую Intel QAT, на экземпляр SQL Server должны быть загружены правильные сборки, инициирующие операцию восстановления.
Рекомендации по использованию
Рекомендуется использовать BLOCKSIZE 65536 (64 КБ), но такие параметры, как BUFFERCOUNT и MAXTRANSFERSIZE по-прежнему зависят от конкретных условий использования, и требуют предварительного исследования прежде внесения изменений отличных от значений по умолчанию.
Дополнительная информация
Прочтите руководство Microsoft Integrated acceleration and offloading, это облегчит начало работы с технологией Intel QuickAssist в SQL Server 2022.
Посетите портал Intel QAT (недоступен из России), где можно получить самую свежую информацию Intel о драйверах устройств Intel QAT и поддержке приложений, а также найти актуальную техническую документацию.