Distributed Table Engine | ClickHouse DocsTables with Distributed engine do not store any data of their own, but allow distributed query processing on multiple servers.https://clickhouse.com/docs/en/engines/table-engines/special/distributed具有分布式引擎的表不存储自己的任何数据,但允许在多个服务器上进行分布式查询处理。 读取是自动并行的。读取数据会自动使用表索引。
建表语句
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = Distributed(cluster, database, table[, sharding_key[, policy_name]])
[SETTINGS name=value, ...]
根据已存在的表建立
如果distributed表指向服务器中已经存在的表:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
AS [db2.]name2
ENGINE = Distributed(cluster, database, table[, sharding_key[, policy_name]])
[SETTINGS name=value, ...]
分布式表引擎的参数
-
cluster
- 集群名 -
database
- 数据库名,除了使用字符串,还能够使用currentDatabase() -
table
- 表名 -
sharding_key
- (可选)分片键 -
policy_name
- (可选)策略名称,它将用于存储异步发送的临时文件
Distributed相关的参数
-
fsync_after_insert
- 异步插入到分布式表之后,再对文件数据进行 fsync(fsync指同步内存中所有已修改的文件数据到储存设备)。保证操作系统将能将所有数据刷到磁盘文件中。 -
fsync_directories
- do thefsync
for directories. -
bytes_to_throw_insert
- 等待异步 INSERT的数据字节数超过这个值,就会抛出异常。默认为0,取消限制。 -
bytes_to_delay_insert
- 等待异步 INSERT的数据字节数超过这个值,插入将被延迟。默认为0,取消限制。 -
max_delay_to_insert
- 上面参数延迟的时间,默认为60(s) -
monitor_batch_inserts
- same as