跳到主要内容

压缩配置

TDengine 支持细粒度的压缩配置。建表时可针对每一列指定是否压缩,以及使用的编码算法、压缩算法和压缩级别。

压缩术语

压缩等级

  • 一级压缩:对数据进行编码,本质上也是一种压缩。
  • 二级压缩:在编码结果基础上,对数据块再进行压缩。

压缩级别

本文中的压缩级别特指二级压缩算法内部的级别。例如 zstd 至少提供 8 个 level 可选,不同级别在压缩率、压缩速度和解压速度之间权衡不同。为简化选择,TDengine 将其归纳为以下三种级别:

  • high:压缩率最高,压缩速度和解压速度相对最差。
  • low:压缩速度和解压速度最好,压缩率相对最低。
  • medium:兼顾压缩率、压缩速度和解压速度。

算法与默认值

  • 编码算法(一级压缩):simple8bbit-packingdelta-idelta-ddisabledbss(byte-stream-split)
  • 压缩算法(二级压缩):lz4zlibzstdtszxzdisabled

各数据类型可用的算法及默认值如下:

数据类型可选编码算法编码默认值可选压缩算法压缩默认值压缩级别默认值
INT / UINTdisabled / simple8bsimple8blz4 / zlib / zstd / xzlz4medium
TINYINT / UTINYINT / SMALLINT / USMALLINTdisabled / simple8bsimple8blz4 / zlib / zstd / xzzlibmedium
BIGINT / UBIGINTdisabled / simple8b / delta-isimple8blz4 / zlib / zstd / xzlz4medium
TIMESTAMPdisabled / delta-idelta-ilz4 / zlib / zstd / xzlz4medium
FLOAT / DOUBLEdisabled / delta-d / bssbsslz4 / zlib / zstd / xz / tszlz4medium
BINARY / NCHARdisableddisabledlz4 / zlib / zstd / xzzstdmedium
BOOLdisabled / bit-packingbit-packinglz4 / zlib / zstd / xzzstdmedium
DECIMALdisableddisabledlz4 / zlib / zstd / xzzstdmedium

其中,tsz 仅适用于 FLOATDOUBLE

语法

建表时指定压缩

CREATE TABLE [db_name.]tb_name (
col_name col_type
[ENCODE 'encode_type']
[COMPRESS 'compress_type']
[LEVEL 'level']
[, ...]
);

超级表语法中同样支持在列定义上指定 ENCODECOMPRESSLEVEL,参见 超级表

参数说明

  • tb_name:普通表或超级表名称。
  • encode_type:一级压缩(编码)算法,取值见上文算法列表。
  • compress_type:二级压缩算法,取值见上文算法列表。
  • level:二级压缩级别,默认值为 medium,也支持简写为 'h''l''m'

修改列的压缩方式

ALTER TABLE [db_name.]tb_name MODIFY COLUMN col_name
[ENCODE 'encode_type']
[COMPRESS 'compress_type']
[LEVEL 'level'];

参数说明

  • tb_name:表名,可以是超级表或普通表。
  • col_name:待修改压缩配置的列,只能是普通列。

查看列的压缩方式

DESCRIBE [db_name.]tb_name;

DESCRIBE 会显示列的基本信息,包括类型和压缩配置。

兼容性

  • 完全兼容升级前已存在的数据。
  • 从更低版本升级到 v3.3.0.0 及之后版本后,不能再回退到更低版本。