В этой статье блога мы рассмотрим концепцию архивного сжатия в SQL Server. Архивное сжатие – это функция, введенная в SQL Server 2014, которая позволяет дополнительно сжимать данные в таблицах и индексах столбцового хранилища. Эта функция особенно полезна в хранилищах данных, где есть смесь часто используемых и редко используемых данных.
Прежде чем мы углубимся в детали, давайте разберемся в основах индексов столбцового хранилища. Индексы столбцового хранилища хранят данные в столбцовом формате, что обеспечивает значительные преимущества производительности для аналитических запросов. SQL Server 2014 ввел поддержку столбцового хранилища и архивного сжатия столбцового хранилища, что позволяет добиться еще большей эффективности хранения.
Архивное сжатие включается на уровне таблицы или раздела. Оно реализуется в виде дополнительного слоя сжатия потока поверх реализации индекса столбцового хранилища. При записи данных на диск они автоматически сжимаются, а при чтении с диска они автоматически разжимаются. Этот слой сжатия обеспечивает дополнительное уменьшение размера хранения, обычно составляющее от 25% до 60%+ в зависимости от данных.
Для применения архивного сжатия вы можете использовать команды T-SQL. Давайте рассмотрим несколько примеров:
-- Добавление архивного бита для одного раздела
ALTER TABLE tbl_myColumnStore REBUILD PARTITION = 1 WITH ( DATA_COMPRESSION = COLUMNSTORE_ARCHIVE );
-- Добавление архивного бита для всех разделов
ALTER TABLE tbl_myColumnStore REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = COLUMNSTORE_ARCHIVE );
-- Добавление столбцового хранилища для всех разделов и архива для определенных разделов
ALTER TABLE tbl_myColumnStore REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (1, 3));
Эти команды демонстрируют, как применить архивное сжатие к определенным разделам или ко всем разделам в таблице. Результирующие данные будут продолжать сжиматься с помощью сжатия столбцового хранилища, обеспечивая эффективное хранение и улучшенную производительность запросов.
Если вы хотите разархивировать данные, которые были сжаты с помощью архивного сжатия, вы можете использовать следующую команду:
-- Отключение архивного бита и применение сжатия столбцового хранилища для всех разделов
ALTER TABLE tbl_myColumnStore REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = COLUMNSTORE );
Эта команда удаляет архивное сжатие и применяет сжатие столбцового хранилища ко всем разделам в таблице.
По завершении этой статьи блога мы хотели бы услышать от вас. Вы используете архивное сжатие столбцового хранилища в своих средах? Какую степень сжатия вы достигаете и какие преимущества в использовании пространства? Поделитесь своими опытом с нами, пока мы продолжаем учиться вместе.