首页/数据/NoSQL 速查/RENAME 与 EXCHANGE 表切换
ClickHouse56 条

RENAME 与 EXCHANGE 表切换

RENAME TABLE 重命名表,EXCHANGE TABLES 原子交换两张表(需 Atomic 库);配合 ON CLUSTER 可把 DDL 下发到集群所有节点。

NoSQL 速查数据更新于 2026-10-13

RENAME 与 EXCHANGE 是什么

RENAME TABLE 重命名表,EXCHANGE TABLES 原子交换两张表的元数据(要求 Atomic 引擎库),配合 ON CLUSTER 可以把 DDL 下发到集群所有节点。EXCHANGE 不搬运数据,是重建大表的常用切换手段:新表灌数据期间旧表保持可查,灌完后一次交换完成上线,出问题时再交换一次即可回退,整个过程不产生数据拷贝。

基本信息

重命名RENAME TABLE a TO b
交换EXCHANGE TABLES a AND b
原子性Atomic 数据库下两者都是原子操作
集群加 ON CLUSTER <name> 在集群维度执行 DDL
权限需要 alter 权限
所属系统ClickHouse

典型使用场景

  • 重建大表:新表装配完成后原子切换,避免长时间停写
  • 快速回退:上线后发现问题,再交换一次即可回到旧表
  • 命名规范:把历史遗留的不规范表名统一
  • 集群下发:在多节点上一次性完成重命名或交换
  • 切换前校验:并行比对新旧表的行数与关键指标

重命名与交换

重命名与交换
RENAME TABLE events TO events_old;         -- 重命名,把历史表改名保留

-- 新表灌好数据后原子换回
EXCHANGE TABLES events_new AND events;     -- 只交换元数据,不搬数据

-- 集群范围执行(各节点对象要一致)
-- EXCHANGE TABLES events_new AND events ON CLUSTER prod;

操作对照

操作效果注意
RENAME TABLE修改表名Atomic 库下是原子操作
EXCHANGE TABLES交换两张表需同库且为 Atomic 引擎
ON CLUSTER下发到集群各节点各节点对象必须一致
回退反向再交换一次比重新回灌数据快得多
校验交换前后比对行数与指标避免切到不完整的新表
EXCHANGE 不搬数据、只交换元数据,是重建大表的常用切换手段:新表构建期间旧表保持可查,切换瞬间完成。
EXCHANGE 要求两张表在同一个库且都是 Atomic 引擎下的普通表;复制表跨集群交换要确认每个副本的状态,否则会出现部分节点成功、部分失败的情况。
用 ON CLUSTER 执行 RENAME 或 EXCHANGE 前要确认各节点上的对象一致,否则部分节点成功会留下不一致状态,后续补做的成本比一次做对高得多。

易错点

  • EXCHANGE 要求同库且都是 Atomic 引擎的普通表,复制表跨集群交换要确认每个副本状态
  • 用 ON CLUSTER 执行 RENAME 前确认各节点对象一致,否则部分节点成功会留下不一致状态
  • 交换前后不比对行数与关键指标,切换后才发现新表数据不完整
  • 把 EXCHANGE 当数据迁移手段:它不搬运数据,历史数据仍在原表中

数据来源与参考

  • ClickHouse Docs: RENAME / EXCHANGE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌