CREATE DATABASE 是什么
ClickHouse 建库语法是 CREATE DATABASE [IF NOT EXISTS] db [ENGINE = Atomic],Atomic 是当前默认引擎,支持原子重命名与表交换,普通建库不需要显式指定。元数据可以用 SHOW DATABASES 和 SHOW CREATE DATABASE 查看,system.databases 表里还能看到引擎、路径与 UUID。分布式部署中 Replicated 数据库可以把 DDL 自动同步到集群各副本,通常与 ReplicatedMergeTree 搭配使用。
基本信息
| 常用语句 | CREATE DATABASE / SHOW DATABASES / SHOW CREATE DATABASE / DROP DATABASE |
|---|---|
| 引擎 | Atomic(默认)、Ordinary、Replicated、Lazy、Memory |
| 元数据 | system.databases 可查引擎、路径与 UUID |
| 集群操作 | 配合 ON CLUSTER 子句下发到各节点 |
| 所属系统 | ClickHouse |
典型使用场景
- 按业务划库:把分析、日志、临时数据分库管理,便于权限与配额控制
- 脚本可重复执行:用 IF NOT EXISTS 避免重复初始化时报错
- 核对生效参数:用 SHOW CREATE DATABASE 回看引擎与设置
- 集群建库:用 Replicated 库把 DDL 自动同步到各节点
- 环境清理:DROP DATABASE 一次删除测试库的全部表
建库与管理
建库与管理
CREATE DATABASE IF NOT EXISTS analytics; -- 可重复执行,避免脚本报错
SHOW DATABASES; -- 列出全部库
SHOW CREATE DATABASE analytics; -- 回看实际生效的引擎与参数
SELECT name, engine FROM system.databases; -- 元数据里查引擎与路径
DROP DATABASE IF EXISTS old_db; -- 删除整个库(含所有表)常用引擎读法
| 引擎 | 含义 | 注意 |
|---|---|---|
| Atomic | 默认引擎 | 支持原子 RENAME 与 EXCHANGE |
| Ordinary | 早期引擎 | RENAME 非原子,新库不建议使用 |
| Replicated | DDL 自动复制 | 通常配合 ReplicatedMergeTree |
| Lazy | 延迟创建 | 到期未使用会被删除 |
| system.databases | 元数据表 | 可查引擎、路径与 UUID |
分布式部署里 Replicated 数据库能把 DDL 自动同步到集群各副本,减少逐节点手工执行;它管的是建表等 DDL,数据的副本一致性仍由 ReplicatedMergeTree 负责。
DROP DATABASE 不做二次确认就会删除库内全部表,批量清理前先用 SHOW TABLES 核对目标库里的内容。
老库若仍是 Ordinary 引擎,RENAME 不是原子操作,重建表切换的流程要按旧引擎的特性设计,必要时新建库再迁移。
建库语句不写引擎就跟随服务端默认配置,跨版本升级后默认值可能变化;对依赖原子切换能力的库,建议在建库语句里显式写出 ENGINE = Atomic。
库名与表名在 ClickHouse 中区分大小写,脚本里拼错库名时报错信息一般很直接,先用 SHOW DATABASES 的输出核对实际名称。