官网描述:alter操作仅支持 *MergeTree ,Merge以及Distributed等引擎表。本示例采用支持数据副本的MergeTree做测试表,alter语句操作数据的会在压缩的情况下被复制
个人见解:在ck使用alter table on cluster语句的使用,alter语句会通过zk去调整各个ck分片的数据,所以就会有一种尴尬就是,操作大表的数据,alter on cluster语句就会阻塞着,速度很慢,如果此时ck集群有机器宕机,就会影响到整个表。最好的方式就是小表使用这种alter on cluster语句,而大表(上亿级别)自己使用脚本,轮询的到每个机器上alter表。
测试表:
CREATE TABLE test.tmp_uid_info
(
`uid` Int32,
`alias` Int32,
`sex` String,
`totalDate` Date,
`source` String,
`name` String
)
ENGINE = ReplicatedMergeTree('/clickhouse/test/tables/{shard}/tmp_uid_info', '{replica}')
PARTITION BY totalDate
ORDER BY uid
SETTINGS index_granularity = 8192
添加新字段
#语法格式
alter table tb_name add column [IF NOT EXISTS] name [type] [default_expr]
[alter name_after]
# 给测试表的末尾增加新字段.,对于数据表中已经存在旧数据⽽⾔,新追加的字段会使⽤默认值补全
alter table default.tmp_uid_info_all on cluster ck_cluster add column age String default '0';
alter t

本文介绍了ClickHouse中ALTER命令的使用,包括添加、删除和修改字段,以及清理和管理数据。针对大规模表的操作,建议使用脚本进行分布式处理以避免阻塞和提高效率。同时,提供了数据清理、分区管理和数据删除的示例,强调了在处理大表时的注意事项和最佳实践。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



