Сжатие данных

StarRocks поддерживает сжатие данных для хранения таблиц и индексов. Сжатие не только экономит дисковое пространство, но и повышает производительность задач, интенсивных по операциям чтения записи (I/O), поскольку StarRocks читает меньше страниц с диска на один запрос. Учтите, что для сжатия и распаковки требуется дополнительный ресурс CPU.

Выбор алгоритма сжатия

StarRocks поддерживает четыре алгоритма сжатия: LZ4, Zstandard (zstd), zlib и Snappy. Эти алгоритмы различаются коэффициентом сжатия и скоростью сжатия/распаковки. В общем случае коэффициенты сжатия упорядочиваются так: zlib > Zstandard > LZ4 > Snappy. При этом zlib показывает относительно высокий уровень сжатия; вследствие более сильного сжатия загрузка и выполнение запросов по таблицам с zlib могут замедляться. LZ4 и Zstandard, напротив, обеспечивают сбалансированное соотношение между коэффициентом сжатия и скоростью распаковки. Выберите алгоритм в зависимости от приоритетов: экономия места или производительность. Если специальных требований по экономии места нет, рекомендуется LZ4 или Zstandard.

Типы данных влияют на достигаемый коэффициент сжатия.

Задание алгоритма сжатия для таблицы

Алгоритм сжатия можно указать только при создании таблицы; впоследствии изменить его нельзя.

В примере ниже создается таблица data_compression с алгоритмом Zstandard.

CREATE TABLE `data_compression` (
  `id`      INT(11)     NOT NULL     COMMENT "",
  `name`    CHAR(200)   NULL         COMMENT ""
)
ENGINE=OLAP 
UNIQUE KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`)
PROPERTIES (
"compression" = "ZSTD"
);

Если алгоритм сжатия не указан, по умолчанию используется LZ4.

Проверить алгоритм сжатия для таблицы можно с помощью оператора SHOW CREATE TABLE.