创建分布式表
--先创建本地表 设置自动过期时间3天
CREATE TABLE IF NOT EXISTS ck_database.ck_databaseon cluster default(cluster name)
(`table_id` String COMMENT 'id',`item_id` String COMMENT '业务id',`desc` Int64 COMMENT '描述',`time` DateTime DEFAULT now() COMMENT '数据写入时间,TTL 用'
)
ENGINE = MergeTree
ORDER BY (table_id, item_id)
TTL time + toIntervalDay(3)
SETTINGS index_granularity = 8192--再创建分布式表
CREATE TABLE IF NOT EXISTS ck_database.ck_table_all on cluster default(cluster name)
(`table_id` String COMMENT 'id',`item_id` String COMMENT '业务id',`desc` Int64 COMMENT '描述',`time` DateTime DEFAULT now() COMMENT '数据写入时间,TTL 用'
)
ENGINE = Distributed('default', 'ck_database', 'ck_database', sipHash64(assumeNotNull(table_id)))
删除分布式表
删除ck表,先删除分布式表,再删除本地表
DROP TABLE ck_dadasource.ck_table_all ON CLUSTER default(ck_cluster_name);
DROP TABLE ck_dadasource.ck_table_local ON CLUSTER default(ck_cluster_name);
修改分布式表
通过local表来更新 同时指定上集群名称;如果通过all来更新则不支持会报错
alter table ck_table_local on cluster default(ck_cluster_name)
update is_deleted = 2
where redis_key in (123,456,789)
分布式表添加字段
alter table city_local ON CLUSTER ck_cluster_name add column history Int32;
同时支持指定在某个字段后面添加字段:
alter table city_local ON CLUSTER ck_cluster_name add column history Int32 after city_code;
-- 删除字段【可行】
alter table test_db.city_local ON CLUSTER ck_cluster_name drop column history;