homework-jianmu/docs/zh/14-reference/03-taos-sql/32-compress.md

90 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 可配置压缩算法
sidebar_label: 可配置压缩
description: 可配置压缩算法
---
从 TDengine 3.3.0.0 版本开始TDengine 提供了更高级的压缩功能,用户可以在建表时针对每一列配置是否进行压缩、以及使用的压缩算法和压缩级别。
## 压缩术语定义
### 压缩等级
- 一级压缩:对数据进行编码,本质也是一种压缩
- 二级压缩:在编码的基础上对数据块进行压缩
### 压缩级别
在本文中特指二级压缩算法内部的级别比如zstd至少8个level可选每个level 下都有不同表现,本质是压缩率、压缩速度、解压速度之间的 tradeoff为了避免选择困难特简化定义为如下三种级别
- high压缩率最高压缩速度和解压速度相对最差。
- low压缩速度和解压速度最好压缩率相对最低。
- medium兼顾压缩率、压缩速度和解压速度。
### 压缩算法列表
- 编码算法列表(一级压缩):simple8b, bit-packing,delta-i, delta-d, disabled
- 压缩算法列表(二级压缩): lz4、zlib、zstd、tsz、xz、disabled
- 各个数据类型的默认压缩算法列表和适用范围
| 数据类型 | 可选编码算法 | 编码算法默认值 | 可选压缩算法|压缩算法默认值| 压缩等级默认值|
| :-----------:|:----------:|:-------:|:-------:|:----------:|:----:|
| int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | medium|
| tinyint/untinyint/smallint/usmallint | simple8b| simple8b | lz4/zlib/zstd/xz| zlib | medium|
| bigint/ubigint/timestamp | simple8b/delta-i | delta-i |lz4/zlib/zstd/xz | lz4| medium|
|float/double | delta-d|delta-d |lz4/zlib/zstd/xz/tsz|lz4| medium|
|binary/nchar| disabled| disabled|lz4/zlib/zstd/xz| zstd| medium|
|bool| bit-packing| bit-packing| lz4/zlib/zstd/xz| zstd| medium|
## SQL 语法
### 建表时指定压缩
```sql
CREATE [dbname.]tabname (colName colType [ENCODE 'encode_type'] [COMPRESS 'compress_type' [LEVEL 'level'], [, other cerate_definition]...])
```
**参数说明**
- tabname超级表或者普通表名称
- encode_type: 一级压缩,具体参数见上面列表
- compress_type: 二级压缩,具体参数见上面列表
- level: 特指二级压缩的级别默认值为medium, 支持简写为 'h'/'l'/'m'
**功能说明**
- 创建表的时候指定列的压缩方式
### 更改列的压缩方式
```sql
ALTER TABLE [db_name.]tabName MODIFY COLUMN colName [ENCODE 'ecode_type'] [COMPRESS 'compress_type'] [LEVEL "high"]
```
**参数说明**
- tabName: 表名,可以为超级表、普通表
- colName: 待更改压缩算法的列, 只能为普通列
**功能说明**
- 更改列的压缩方式
### 查看列的压缩方式
```sql
DESCRIBE [dbname.]tabName
```
**功能说明**
- 显示列的基本信息,包括类型、压缩方式
## 兼容性
- 完全兼容已经存在的数据
- 从更低版本升级到 3.3.0.0 后不能回退