1
- ``` md
2
1
---
3
2
title : Fuse Engine 表
4
3
---
@@ -20,6 +19,7 @@ Databend 使用 Fuse Engine 作为其默认存储引擎,提供类似于 Git
20
19
## 何时使用 Fuse Engine
21
20
22
21
适用于:
22
+
23
23
- ** 分析** :具有列式存储的 OLAP 查询
24
24
- ** 数仓** :大量历史数据
25
25
- ** 时间回溯** :访问历史数据版本
@@ -42,18 +42,21 @@ CREATE TABLE <table_name> (
42
42
以下是创建 Fuse Engine 表的主要参数:
43
43
44
44
#### ` ENGINE `
45
+
45
46
- ** 描述:**
46
47
如果未显式指定引擎,Databend 将自动默认使用 Fuse Engine 创建表,这等效于 ` ENGINE = FUSE ` 。
47
48
48
49
---
49
50
50
51
#### ` CLUSTER BY `
52
+
51
53
- ** 描述:**
52
- 指定由多个表达式组成的数据的排序方法。 有关更多信息,请参见 [ Cluster Key] ( /guides/performance/cluster-key ) 。
54
+ 指定由多个表达式组成的数据的排序方法。有关更多信息,请参见 [ Cluster Key] ( /guides/performance/cluster-key ) 。
53
55
54
56
---
55
57
56
58
#### ` <Options> `
59
+
57
60
- ** 描述:**
58
61
Fuse Engine 提供了各种选项(不区分大小写),允许您自定义表的属性。
59
62
- 有关详细信息,请参见 [ Fuse Engine Options] ( #fuse-engine-options ) 。
@@ -70,93 +73,102 @@ CREATE TABLE <table_name> (
70
73
---
71
74
72
75
### ` compression `
76
+
73
77
- ** 语法:**
74
78
` compression = '<compression>' `
75
79
- ** 描述:**
76
- 指定引擎的压缩方法。 压缩选项包括 lz4、zstd、snappy 或 none。 压缩方法在对象存储中默认为 zstd,在文件系统 (fs) 存储中默认为 lz4。
80
+ 指定引擎的压缩方法。压缩选项包括 lz4、zstd、snappy 或 none。压缩方法在对象存储中默认为 zstd,在文件系统 (fs) 存储中默认为 lz4。
77
81
78
82
---
79
83
80
84
### ` snapshot_loc `
85
+
81
86
- ** 语法:**
82
87
` snapshot_loc = '<snapshot_loc>' `
83
88
- ** 描述:**
84
89
以字符串格式指定位置参数,允许轻松共享表而无需复制数据。
85
90
86
91
---
87
92
88
-
89
93
### ` block_size_threshold `
94
+
90
95
- ** 语法:**
91
96
` block_size_threshold = <n> `
92
97
- ** 描述:**
93
- 指定最大块大小(以字节为单位)。 默认为 104,857,600 字节。
98
+ 指定最大块大小(以字节为单位)。默认为 104,857,600 字节。
94
99
95
100
---
96
101
97
102
### ` block_per_segment `
103
+
98
104
- ** 语法:**
99
105
` block_per_segment = <n> `
100
106
- ** 描述:**
101
- 指定一个段中的最大块数。 默认为 1,000。
107
+ 指定一个段中的最大块数。默认为 1,000。
102
108
103
109
---
104
110
105
111
### ` row_per_block `
112
+
106
113
- ** 语法:**
107
114
` row_per_block = <n> `
108
115
- ** 描述:**
109
- 指定文件中的最大行数。 默认为 1,000,000。
116
+ 指定文件中的最大行数。默认为 1,000,000。
110
117
111
118
---
112
119
113
120
### ` bloom_index_columns `
121
+
114
122
- ** 语法:**
115
123
` bloom_index_columns = '<column> [, <column> ...]' `
116
124
- ** 描述:**
117
- 指定要用于 Bloom Index 的列。 这些列的数据类型可以是 Map、Number、String、Date 或 Timestamp。 如果未指定任何特定列,则默认情况下会在所有受支持的列上创建 Bloom Index。 ` bloom_index_columns='' ` 禁用 Bloom Index。
125
+ 指定要用于 Bloom Index 的列。这些列的数据类型可以是 Map、Number、String、Date 或 Timestamp。如果未指定任何特定列,则默认情况下会在所有受支持的列上创建 Bloom Index。 ` bloom_index_columns='' ` 禁用 Bloom Index。
118
126
119
127
---
120
128
121
129
### ` change_tracking `
130
+
122
131
- ** 语法:**
123
132
` change_tracking = True / False `
124
133
- ** 描述:**
125
- 在 Fuse Engine 中将此选项设置为 ` True ` 允许跟踪表的更改。 为表创建 Stream 会自动将 ` change_tracking ` 设置为 ` True ` ,并将其他隐藏列引入到表中作为更改跟踪元数据。 有关更多信息,请参见 [ How Stream Works] ( /guides/load-data/continuous-data-pipelines/stream#how-stream-works ) 。
134
+ 在 Fuse Engine 中将此选项设置为 ` True ` 允许跟踪表的更改。为表创建 Stream 会自动将 ` change_tracking ` 设置为 ` True ` ,并将其他隐藏列引入到表中作为更改跟踪元数据。有关更多信息,请参见 [ How Stream Works] ( /guides/load-data/continuous-data-pipelines/stream#how-stream-works ) 。
126
135
127
136
---
128
137
129
138
### ` data_retention_period_in_hours `
139
+
130
140
- ** 语法:**
131
141
` data_retention_period_in_hours = <n> `
132
142
- ** 描述:**
133
- 指定保留表数据的小时数。 最小值为 1 小时。 最大值由 [ databend-query.toml] ( https://github.com/databendlabs/databend/blob/main/scripts/distribution/configs/databend-query.toml ) 配置文件中的 ` data_retention_time_in_days_max ` 设置定义,如果未指定,则默认为 2,160 小时(90 天 x 24 小时)。
143
+ 指定保留表数据的小时数。最小值为 1 小时。最大值由 [ databend-query.toml] ( https://github.com/databendlabs/databend/blob/main/scripts/distribution/configs/databend-query.toml ) 配置文件中的 ` data_retention_time_in_days_max ` 设置定义,如果未指定,则默认为 2,160 小时(90 天 x 24 小时)。
134
144
135
145
---
136
146
137
147
### ` enable_auto_vacuum `
148
+
138
149
- ** 语法:**
139
150
` enable_auto_vacuum = 0 / 1 `
140
151
- ** 描述:**
141
- 控制表是否在 mutations 期间自动触发 vacuum 操作。 这可以全局设置为所有表的设置,也可以在表级别进行配置。 表级别选项的优先级高于同名的会话/全局设置。 启用后(设置为 1),在 INSERT 或 ALTER TABLE 等 mutations 之后将自动触发 vacuum 操作,根据配置的保留策略清理表数据。
152
+ 控制表是否在 mutations 期间自动触发 vacuum 操作。这可以全局设置为所有表的设置,也可以在表级别进行配置。表级别选项的优先级高于同名的会话/全局设置。启用后(设置为 1),在 INSERT 或 ALTER TABLE 等 mutations 之后将自动触发 vacuum 操作,根据配置的保留策略清理表数据。
142
153
143
154
** 示例:**
155
+
144
156
``` sql
145
157
-- 全局设置 enable_auto_vacuum,适用于所有会话中的所有表
146
158
SET GLOBAL enable_auto_vacuum = 1 ;
147
-
159
+
148
160
-- 创建一个禁用自动 vacuum 的表(覆盖全局设置)
149
161
CREATE OR REPLACE TABLE t1 (id INT ) ENABLE_AUTO_VACUUM = 0 ;
150
162
INSERT INTO t1 VALUES (1 ); -- 即使有全局设置也不会触发 vacuum
151
-
163
+
152
164
-- 创建另一个继承全局设置的表
153
165
CREATE OR REPLACE TABLE t2 (id INT );
154
166
INSERT INTO t2 VALUES (1 ); -- 由于全局设置,将触发 vacuum
155
-
167
+
156
168
-- 为现有表启用自动 vacuum
157
169
ALTER TABLE t1 SET OPTIONS(ENABLE_AUTO_VACUUM = 1 );
158
170
INSERT INTO t1 VALUES (2 ); -- 现在将触发 vacuum
159
-
171
+
160
172
-- 表选项优先于全局设置
161
173
SET GLOBAL enable_auto_vacuum = 0 ; -- 全局关闭
162
174
-- t1 仍然会 vacuum,因为表设置覆盖了全局设置
@@ -167,39 +179,40 @@ CREATE TABLE <table_name> (
167
179
---
168
180
169
181
### ` data_retention_num_snapshots_to_keep `
182
+
170
183
- ** 语法:**
171
184
` data_retention_num_snapshots_to_keep = <n> `
172
185
- ** 描述:**
173
- 指定在 vacuum 操作期间要保留的快照数。 这可以全局设置为所有表的设置,也可以在表级别进行配置。 表级别选项的优先级高于同名的会话/全局设置。 设置后,在 vacuum 操作后只会保留指定数量的最新快照。 覆盖 ` data_retention_time_in_days ` 设置。 如果设置为 0,则将忽略此设置。 此选项与 ` enable_auto_vacuum ` 设置结合使用,以提供对快照保留策略的精细控制。
174
-
186
+ 指定在 vacuum 操作期间要保留的快照数。这可以全局设置为所有表的设置,也可以在表级别进行配置。表级别选项的优先级高于同名的会话/全局设置。设置后,在 vacuum 操作后只会保留指定数量的最新快照。覆盖 ` data_retention_time_in_days ` 设置。如果设置为 0,则将忽略此设置。此选项与 ` enable_auto_vacuum ` 设置结合使用,以提供对快照保留策略的精细控制。
187
+
175
188
** 示例:**
189
+
176
190
``` sql
177
191
-- 将全局保留设置为所有会话中所有表的 10 个快照
178
192
SET GLOBAL data_retention_num_snapshots_to_keep = 10 ;
179
-
193
+
180
194
-- 创建一个具有自定义快照保留的表(覆盖全局设置)
181
- CREATE OR REPLACE TABLE t1 (id INT )
195
+ CREATE OR REPLACE TABLE t1 (id INT )
182
196
enable_auto_vacuum = 1
183
197
data_retention_num_snapshots_to_keep = 5 ;
184
-
198
+
185
199
-- 创建另一个继承全局设置的表
186
200
CREATE OR REPLACE TABLE t2 (id INT ) enable_auto_vacuum = 1 ;
187
-
201
+
188
202
-- 当触发 vacuum 时:
189
203
-- t1 将保留 5 个快照(表设置)
190
204
-- t2 将保留 10 个快照(全局设置)
191
-
205
+
192
206
-- 更改全局设置
193
207
SET GLOBAL data_retention_num_snapshots_to_keep = 20 ;
194
-
208
+
195
209
-- 表选项仍然优先:
196
210
-- t1 仍然只会保留 5 个快照
197
211
-- t2 现在将保留 20 个快照
198
-
212
+
199
213
-- 修改现有表的快照保留
200
214
ALTER TABLE t1 SET OPTIONS(data_retention_num_snapshots_to_keep = 3 );
201
215
-- 现在,当触发 vacuum 时,t1 将保留 3 个快照
202
216
```
203
217
204
218
---
205
- ```
0 commit comments