Сжатие данных
Обзор
Для оптимизации I/O и уменьшения размера данных в кластерах ADB можно использовать сжатие — или компрессию — данных (data compression). Сжатие доступно только для append-optimized таблиц. В ADB доступны два типа сжатия данных:
-
Сжатие данных на уровне таблицы (table-level) — применяется ко всей таблице. Доступно для append-optimized таблиц как со строковой (row-oriented), так и с колоночной (column-oriented) ориентацией данных.
-
Сжатие данных на уровне столбца (column-level) — применяется к отдельному столбцу. Позволяет использовать различные алгоритмы сжатия для разных столбцов одной таблицы. Этот тип сжатия доступен только для append-optimized таблиц с колоночной ориентацией данных (column-oriented).
Ориентация данных | Уровень | Алгоритм | Пример |
---|---|---|---|
Строковая |
Таблица |
|
Только на уровне таблицы:
|
Табличная |
Таблица и отдельные столбцы |
|
|
Независимо от уровня, на котором применяется сжатие данных, для его настройки можно использовать следующие параметры (storage directives). Они заполняются в выражении WITH
или ENCODING
, соответственно:
-
compresstype
— тип сжатия данных. Возможные значения:ZLIB
,ZSTD
иRLE_TYPE
. Значения не чувствительны к регистру. По умолчанию используется значениеnone
, при котором сжатие не применяется. -
compresslevel
— уровень сжатия данных. Возможные значения для различных алгоритмов приведены в таблице ниже. Уровни с наименьшими номерами соответствуют самой быстрой, но при этом наименьшей компрессии данных.
ВАЖНО
При одновременном описании сжатия данных в выражениях ENCODING и WITH более высокий приоритет у выражения ENCODING .
|
Параметр | Deflate | Zstandard | Run-length encoding |
---|---|---|---|
compresstype |
ZLIB |
ZSTD |
RLE_TYPE |
compresslevel |
Возможные значения:
|
Возможные значения:
|
Возможные значения:
|
Рекомендации
Для наиболее эффективного сжатия данных рекомендуется:
-
Выбирать наиболее подходящий под конкретную задачу алгоритм сжатия:
-
ZSTD — обеспечивает как скорость, так и хорошую степень сжатия, которую можно сконфигурировать с помощью опции
compresslevel
. -
ZLIB — по большей части, используется для обратной совместимости. Как правило, ZSTD превосходит этот тип сжатия при обычных рабочих нагрузках.
-
RLE_TYPE — по сравнению с другими алгоритмами сжимает данные лучше в случаях, когда одни и те же значения данных встречаются во множестве последовательных строк. Но этот тип сжатия не подходит для таблиц, которые не содержат больших наборов повторяющихся данных.
-
-
При выборе уровня сжатия данных следует помнить: чем выше этот уровень — тем больше, но дольше по времени сжатие данных. Фактически сжатие данных позволяет улучшить показатели I/O и уменьшить размер данных за счет ресурсов CPU. Поэтому всегда нужно соблюдать баланс между доступными ресурсами CPU и требуемой скоростью сжатия. Постарайтесь найти оптимальные настройки — чтобы избежать длительного сжатия и медленного сканирования данных.
-
Конечная производительность сжатых таблиц зависит от множества факторов, включая аппаратное обеспечение, параметры запросов и так далее. Всегда проводите тестирование — чтобы определить, насколько эффективно сжатие данных в конкретном окружении.
-
Не рекомендуется использовать сжатые таблицы в файловых системах, применяющих компрессию данных.
РЕКОМЕНДАЦИЯ
|