注:本篇文章阐述的是StarRocks-3.2版本的数据压缩机制
1.数据压缩概述
StarRocks支持对表,索引数据进行压缩(compression)。数据压缩不仅有助于节省存储空间,还能提高I/O密集型任务的性能,但是压缩和解压数据需要额外的cpu资源。
2.选择数据压缩算法
StarRocks支持四种数据压缩算法:LZ4,Snappy,Zstandard(或 zstd)、zlib。每种压缩算法在压缩率和压缩/解压缩性能上有所不同。压缩率排名如下:zlib > Zstandard > LZ4 > Snappy 。由于数据高度压缩,使用zlib算法的表,其导入和查询性能会受到一定程度的影响。LZ4 和 Zstandard算法具有较为均衡的压缩比和解压缩性能。如果对存储空间占用没有特殊需求,建议使用LZ4 或Zstandard算法。除此之外,不同的数据类型也会影响算法的压缩率。
3.设置数据压缩算法
只能在建表时通过增加属性 compression
为其设置数据压缩算法且后续无法修改。如不指定数据压缩算法,StarRocks 默认使用 LZ4。
compression
有效值包括:
LZ4
:LZ4 算法。ZSTD
:Zstandard 算法。ZLIB
:zlib 算法。SNAPPY
:Snappy 算法。
sql
#对表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"
);
参考文章: