简体中文
Appearance
简体中文
Appearance
Datalayers 支持为每个列单独配置编码和压缩算法,以优化存储效率和查询性能。通过合理的算法选择,可以在数据压缩率、读写速度之间达到最佳平衡。
在 CREATE TABLE 语句中,可以为每个列设置 ENCODING 和 COMPRESSION 参数:
CREATE TABLE `sx1`
(
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
sid INT32 ENCODING RLE COMPRESSION SNAPPY,
value REAL,
flag INT8,
timestamp key (ts),
)
PARTITION BY HASH(sid) PARTITIONS 8
ENGINE=TimeSeries示例说明:上述语句为 sid 列配置了 RLE 编码算法和 SNAPPY 压缩算法。
注意事项
ENCODING、COMPRESSION 关键词的大小写。RLE、rLE、rle 都视为合法的输入。我们目前提供两种方式查看列的编码和压缩算法:
SHOW CREATE TABLE <table_name> 语法可以查看某个表的建表语句,其中包括每个列的编码和压缩算法(如果显式设置了)。SELECT <codec> FROM information_schema.columns where table = "<table_name>" 可以从 information_schema.columns 系统表中查询某个表的列元信息。其中 codec 为 encoding 或 compression。注意,这里的 encoding、compression 必须为小写。Datalayers 支持的编码算法如下:
PLAIN:无特殊编码。例如 Boolean 类型编码为 1 个 byte、INT32 类型编码为 4 个 bytes。RLEDELTA_BINARY_PACKEDDELTA_LENGTH_BYTE_ARRAYDELTA_BYTE_ARRAYRLE_DICTIONARYBYTE_STREAM_SPLIT关于每个编码算法的定义,参考 Apache Parquet Encoding。
如果没有显式指定编码算法,不同数据类型的默认编码算法为:
Boolean:RLE。Int32:DLETA_BINARY_PACKED。Int64:DELTA_BINARY_PACKED。BYTE_ARRAY:DELTA_BYTE_ARRAY。PLAIN。每个编码算法兼容的类型是一定的。此处列出每个编码算法不兼容的类型:
RLE:不兼容 String、Binary 类型。DELTA_BINARY_PACKED:不兼容 Boolean、Real、Double、String、Binary。DELTA_LENGTH_BYTE_ARRAY:不兼容 Boolean。DELTA_BYTE_ARRAY:不兼容 Boolean。BYTE_STREAM_SPLIT:不兼容 Boolean、String、Binary。Datalayers 支持的压缩算法包括:
UNCOMPRESSED:无压缩。SNAPPYGZIP(gzip_level):其中 gzip_level 为 GZIP 的压缩级别,可选值的范围为 [0, 10]。BROTLI(brotli_level):其中 brotli_level 为 BROTLI 的压缩级别,可选值的范围为 [0, 11]。LZ4ZSTD(zstd_level):其中 zstd_level 为 ZSTD 的压缩级别,可选值的范围为 [1, 22]。LZ4_RAW关于每个压缩算法的定义,参考 Apache Parquet Compression。
TIP