清空表
清空操作允许移除表或数据库中的数据,同时保留其存在。这是一个轻量级操作,无法撤销。
TRUNCATE 语句
ClickHouse 中的 TRUNCATE 语句用于快速移除表或数据库中的所有数据,同时保留其结构。
TRUNCATE TABLE
| 参数 | 描述 |
|---|---|
IF EXISTS | 如果表不存在,则防止出现错误。如果省略,查询将返回错误。 |
db.name | 可选的数据库名称。 |
ON CLUSTER cluster | 在指定的集群上运行命令。 |
SYNC | 在使用复制表时,使清空操作在副本之间同步。如果省略,清空操作默认异步进行。 |
您可以使用 alter_sync 设置来配置等待操作在副本上执行。
您可以使用 replication_wait_for_inactive_replica_timeout 设置来指定等待非活动副本执行 TRUNCATE 查询的时间(以秒为单位)。
注意
如果 alter_sync 设置为 2,并且一些副本在超过 replication_wait_for_inactive_replica_timeout 设置指定的时间后仍未处于活动状态,则会抛出异常 UNFINISHED。
对于以下表引擎,TRUNCATE TABLE 查询不受支持
TRUNCATE ALL TABLES
| 参数 | 描述 |
|---|---|
ALL | 移除数据库中的所有表的数据。 |
IF EXISTS | 如果数据库不存在,则防止出现错误。 |
db | 数据库名称。 |
LIKE | ILIKE | NOT LIKE '<pattern>' | 按模式过滤表。 |
ON CLUSTER cluster | 在集群上运行命令。 |
移除数据库中的所有表的数据。
TRUNCATE DATABASE
| 参数 | 描述 |
|---|---|
IF EXISTS | 如果数据库不存在,则防止出现错误。 |
db | 数据库名称。 |
ON CLUSTER cluster | 在指定的集群上运行命令。 |
移除数据库中的所有表,但保留数据库本身。如果省略 IF EXISTS 子句,查询将在数据库不存在时返回错误。
注意
TRUNCATE DATABASE 不支持 Replicated 数据库。相反,只需 DROP 和 CREATE 数据库即可。