Spec-Zone.ru › MariaDB

Независимая от движка хранения колоночная компрессия

MariaDB, начиная с 10.3.2

Поддержка независимой от движка хранения колоночной компрессии была добавлена в MariaDB 10.3.2

Независимая от движка хранения колоночная компрессия позволяет сжимать колонки типов TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, VARCHAR и VARBINARY.

Это выполняется с помощью нового атрибута колонки COMPRESSED атрибут колонки: COMPRESSED[=<compression_method>]

В настоящее время поддерживается только метод сжатия zlib.

Совместимость длин полей

При использовании атрибута COMPRESSED, обратите внимание, что ДЛИНА ПОЛЯ уменьшается на 1; например, у BLOB длина составляет 65535, а у BLOB COMPRESSED — 65535-1. См. MDEV-15592.

Новые системные переменные

column_compression_threshold

  • Описание: Минимальная длина данных колонки, пригодная для сжатия.
  • Командная строка: --column-compression-threshold=#
  • Сфера действия: Глобальная, Сеанс
  • Динамическая: Да
  • Тип данных: numeric
  • Значение по умолчанию: 100
  • Диапазон: 0 до 4294967295

column_compression_zlib_level

  • Описание: Уровень сжатия zlib (1 — наибольшая скорость, 9 — наибольшее сжатие).
  • Командная строка: --column-compression-zlib-level=#
  • Сфера действия: Глобальная, Сеанс
  • Динамическая: Да
  • Тип данных: numeric
  • Значение по умолчанию: 6
  • Диапазон: 1 до 9

column_compression_zlib_strategy

  • Описание: Параметр стратегии используется для настройки алгоритма сжатия. Используйте значение DEFAULT_STRATEGY для обычных данных, FILTERED для данных, полученных от фильтра (или предсказателя), HUFFMAN_ONLY для принудительного использования только кодирования Хаффмана (без сопоставления строк) или RLE для ограничения расстояний совпадений до одного (сжатие по повторам). Отфильтрованные данные в основном состоят из небольших значений с достаточно случайным распределением. В этом случае алгоритм сжатия настроен на их лучшее сжатие. Эффект FILTERED заключается в том, чтобы заставить алгоритм больше использовать кодирование Хаффмана и меньше сопоставление строк; он находится где-то между DEFAULT_STRATEGY и HUFFMAN_ONLY . RLE разработан для того, чтобы быть почти таким же быстрым, как HUFFMAN_ONLY, но обеспечивать лучшее сжатие данных изображений PNG. Параметр стратегии влияет только на коэффициент сжатия, но не на корректность сжатого вывода, даже если он настроен неверно. FIXED предотвращает использование динамических кодов Хаффмана, что позволяет упростить декодер для специальных приложений.
  • Командная строка: --column-compression-zlib-strategy=#
  • Сфера действия: Глобальная, Сеанс
  • Динамическая: Да
  • Тип данных: enum
  • Значение по умолчанию: DEFAULT_STRATEGY
  • Допустимые значения: DEFAULT_STRATEGY, FILTERED, HUFFMAN_ONLY, RLE, FIXED

column_compression_zlib_wrap

  • Описание: Если установлено 1 (0 по умолчанию), генерировать заголовок и хвост zlib и вычислять контрольное значение adler32. Это может быть использовано с движками хранения, которые не обеспечивают проверку целостности данных, для обнаружения повреждения данных.
  • Командная строка: --column-compression-zlib-wrap{=0|1}
  • Сфера действия: Глобальная, Сеанс
  • Динамическая: Да
  • Тип данных: boolean
  • Значение по умолчанию: OFF

Новые переменные состояния

Column_compressions

  • Описание: Увеличивается каждый раз, когда данные поля сжимаются.
  • Сфера действия: Глобальная, Сеанс
  • Тип данных: numeric

Column_decompressions

  • Описание: Увеличивается каждый раз, когда данные поля распаковываются.
  • Сфера действия: Глобальная, Сеанс
  • Тип данных: numeric

Ограничения

  • В настоящее время поддерживается только метод zlib.
  • Движок хранения CSV сохраняет данные без сжатия на диске, даже если атрибут COMPRESSED присутствует.
  • Невозможно создать индексы по сжатым колонкам.

Сравнение с сжатием страниц InnoDB

Независимое от движка хранения колоночное сжатие отличается от сжатия страниц InnoDB по ряду аспектов.

  • Оно независимо от движка хранения, в то время как сжатие страниц InnoDB применяется только к InnoDB.
  • Благодаря специфичности по столбцу, можно обращаться к несжатым полям без накладных расходов на распаковку.
  • Доступен только zlib, в то время как сжатие страниц InnoDB может предлагать альтернативные алгоритмы сжатия.
  • Не рекомендуется использовать несколько видов сжатия для одних и тех же данных.
  • Предназначено для сжатия больших BLOB, в то время как сжатие страниц InnoDB подходит для более общего случая.
  • По колонкам нельзя создавать индексы, в то время как сжатие страниц InnoDB позволяет создавать индексы как обычно.

Примеры

CREATE TABLE cmp (i TEXT COMPRESSED);

CREATE TABLE cmp2 (i TEXT COMPRESSED=zlib);

См. также

  • Сжатие страниц InnoDB
  • Формат сжатых строк InnoDB
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/storage-engine-independent-column-compression/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API