Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

SYSTEM

SYSTEM RELOAD EMBEDDED DICTIONARIES

重新加载所有内部字典。 默认情况下,内部字典处于禁用状态。 无论内部字典的更新结果如何,始终返回 Ok.

SYSTEM RELOAD DICTIONARIES

SYSTEM RELOAD DICTIONARIES 查询会重新加载状态为 LOADED 的字典 (参见 system.dictionariesstatus 列) ,即此前已成功加载的字典。 默认情况下,字典采用延迟加载 (参见 dictionaries_lazy_load) ,因此不会在启动时自动加载,而是在首次访问时通过调用 dictGet 函数,或对 ENGINE = Dictionary 的表执行 SELECT 时初始化。

语法

SYSTEM RELOAD DICTIONARIES [ON CLUSTER cluster_name]

SYSTEM RELOAD 字典

彻底重新加载字典 dictionary_name,无论该字典当前处于何种状态 (LOADED / NOT_LOADED / FAILED) 。 无论字典更新结果如何,始终返回 Ok.

SYSTEM RELOAD DICTIONARY [ON CLUSTER cluster_name] dictionary_name

可以通过查询 system.dictionaries 表来查看字典的状态。

SELECT name, status FROM system.dictionaries;

SYSTEM UNLOAD 字典

如果字典状态为 LOADED,则卸载字典 dictionary_name 以释放其占用的内存。 该字典会在后续再次需要时按需重新加载。

SYSTEM UNLOAD DICTIONARY dictionary_name

可以通过查询 system.dictionaries 表来查看字典状态。

SELECT name, status FROM system.dictionaries;

SYSTEM UNLOAD DICTIONARIES

SYSTEM UNLOAD DICTIONARIES 查询会卸载所有状态为 LOADED 的字典 (参见 system.dictionariesstatus 列) ,即所有此前已成功加载的字典。

SYSTEM UNLOAD DICTIONARIES

SYSTEM RELOAD MODELS

卸载所有 CatBoost 模型。

语法

SYSTEM RELOAD MODELS [ON CLUSTER cluster_name]

SYSTEM RELOAD MODEL

卸载 model_path 处的 CatBoost 模型。

语法

SYSTEM RELOAD MODEL [ON CLUSTER cluster_name] <model_path>

SYSTEM RELOAD FUNCTIONS

从配置文件中重新加载所有已注册的可执行用户自定义函数,或重新加载其中一个。

语法

SYSTEM RELOAD FUNCTIONS [ON CLUSTER cluster_name]
SYSTEM RELOAD FUNCTION [ON CLUSTER cluster_name] function_name

SYSTEM RELOAD ASYNCHRONOUS METRICS

重新计算所有异步指标。由于异步指标会根据设置 asynchronous_metrics_update_period_s 定期更新,因此通常无需使用此语句手动更新。

SYSTEM RELOAD ASYNCHRONOUS METRICS [ON CLUSTER cluster_name]

SYSTEM CLEAR|DROP DNS CACHE

清除 ClickHouse 的内部 DNS 缓存。有时 (对于较旧版本的 ClickHouse) ,在基础设施发生变更时 (例如更改另一台 ClickHouse server 或字典所使用 server 的 IP 地址) ,需要使用此命令。

如需更方便地 (自动) 管理缓存,请参见 disable_internal_dns_cachedns_cache_max_entriesdns_cache_update_period 参数。

SYSTEM CLEAR|DROP 标记缓存

清空标记缓存。

SYSTEM CLEAR|DROP PRIMARY INDEX CACHE

清除主索引缓存。该缓存会在内存中保存 MergeTree 表的主键。 其大小由服务器级设置 primary_index_cache_size 控制。

SYSTEM CLEAR|DROP ICEBERG METADATA CACHE

清空 Iceberg 元数据缓存。

SYSTEM CLEAR|DROP AVRO SCHEMA CACHE

清除 AvroConfluent 格式使用的、按 URL 区分的 Confluent Schema Registry 缓存。这会同时删除 schema 拉取缓存 (id → schema) 和 schema 注册缓存 (subject + schema → id) ,因此后续的读写都会回退到 registry 服务器。当 registry 端的 schema 被删除或改写时,此功能非常有用;也可用于在测试中验证 registry 的幂等性。

SYSTEM DROP PARQUET METADATA CACHE

清空 Parquet 元数据缓存。

SYSTEM CLEAR|DROP PAIMON METADATA CACHE

清除已解析的 Paimon 元数据文件 (manifest 列表和 manifests) 的内存缓存。

SYSTEM CLEAR|DROP POINT IN POLYGON CACHE

清除函数 pointInPolygon 使用的预处理常量多边形缓存。已配置的大小限制 (服务器设置 point_in_polygon_cache_size) 保持不变,因此之后缓存仍会继续接受新条目。若要禁用该缓存,请将 point_in_polygon_cache_size 设为 0

SYSTEM CLEAR|DROP TEXT INDEX CACHES

清除文本索引的标记、头部和倒排列表缓存。

如果要单独清除其中某一个缓存,可以运行

  • SYSTEM CLEAR TEXT INDEX TOKENS CACHE,
  • SYSTEM CLEAR TEXT INDEX HEADER CACHE,或
  • SYSTEM CLEAR TEXT INDEX POSTINGS CACHE

SYSTEM CLEAR|DROP INDEX MARK CACHE

清除次级 (数据跳过) 索引的标记缓存。

SYSTEM CLEAR|DROP INDEX UNCOMPRESSED CACHE

清除次级 (数据跳过) 索引的未压缩块缓存。

SYSTEM CLEAR|DROP MMAP CACHE

清除内存映射文件缓存。

SYSTEM CLEAR|DROP PAGE CACHE

清除用户态页缓存,即 ClickHouse 自有的内存缓存,用于缓存从底层存储读取的数据。

SYSTEM CLEAR|DROP VECTOR SIMILARITY INDEX CACHE

清空向量相似度索引缓存。

SYSTEM CLEAR|DROP CONNECTIONS CACHE

清除用于对外连接的 HTTP 连接池缓存。

SYSTEM CLEAR|DROP S3 CLIENT CACHE

清除 S3 客户端的缓存。

SYSTEM PREWARM MARK CACHE

将表的标记预加载到标记缓存中。次级索引的标记也会预加载到索引标记缓存中。

SYSTEM PREWARM MARK CACHE [ON CLUSTER cluster_name] [db.]table

SYSTEM PREWARM PRIMARY INDEX CACHE

MergeTree 表的主索引加载至主索引缓存中。

SYSTEM PREWARM PRIMARY INDEX CACHE [ON CLUSTER cluster_name] [db.]table

SYSTEM CLEAR|DROP DISK METADATA CACHE

清除指定磁盘上的元数据缓存。

SYSTEM DROP DISK METADATA CACHE <disk_name>

SYSTEM SYNC FILESYSTEM CACHE

将 ClickHouse 文件系统缓存的内存状态与磁盘上实际存在的缓存文件进行同步,并返回每个已缓存 File 段的 cache_namepath 和已下载的 size。可选的缓存名称可将该操作限制为仅针对单个缓存。

SYSTEM SYNC FILESYSTEM CACHE ['<cache_name>']

SYSTEM CLEAR|DROP DISTRIBUTED CACHE

删除分布式缓存。使用 CONNECTIONS 可仅删除与分布式缓存服务器之间的缓存连接,或者传入服务器标识符以仅针对某一台服务器。

SYSTEM DROP DISTRIBUTED CACHE [CONNECTIONS | 'server_id']

SYSTEM DROP REPLICA

可以使用以下语法删除 ReplicatedMergeTree 表的失效副本:

SYSTEM DROP REPLICA 'replica_name' FROM TABLE database.table;
SYSTEM DROP REPLICA 'replica_name' FROM DATABASE database;
SYSTEM DROP REPLICA 'replica_name';
SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/path/to/table/in/zk';

这些查询会移除 ZooKeeper 中 ReplicatedMergeTree 的副本路径。当某个副本已失效,且由于对应的表已不存在,无法通过 DROP TABLE 从 ZooKeeper 中删除其元数据时,这一操作就很有用。它只会删除非活动/过期副本,不能删除本地副本;这种情况请使用 DROP TABLEDROP REPLICA 不会删除任何表,也不会从磁盘中移除任何数据或元数据。

第一种会删除 database.table 表中 'replica_name' 副本的元数据。 第二种会对该数据库中的所有复制表执行相同操作。 第三种会对本地服务器上的所有复制表执行相同操作。 第四种在某个表的所有其他副本都已被删除时,可用于删除失效副本的元数据。它要求显式指定表路径。该路径必须与创建表时传给 ReplicatedMergeTree 引擎第一个参数的路径相同。

SYSTEM DROP DATABASE REPLICA

可使用以下语法删除 Replicated 数据库的失效副本:

SYSTEM DROP DATABASE REPLICA 'replica_name' [FROM SHARD 'shard_name'] FROM DATABASE database;
SYSTEM DROP DATABASE REPLICA 'replica_name' [FROM SHARD 'shard_name'];
SYSTEM DROP DATABASE REPLICA 'replica_name' [FROM SHARD 'shard_name'] FROM ZKPATH '/path/to/table/in/zk';

SYSTEM DROP REPLICA 类似,但当没有可执行 DROP DATABASE 的数据库时,它会从 ZooKeeper 中移除 Replicated 数据库的副本路径。请注意,它不会移除 ReplicatedMergeTree 的副本 (因此你可能还需要使用 SYSTEM DROP REPLICA) 。分片名和副本名是在创建数据库时于 Replicated 引擎参数中指定的名称。此外,这些名称也可以从 system.clustersdatabase_shard_namedatabase_replica_name 列中获取。如果缺少 FROM SHARD 子句,那么 replica_name 必须是完整的副本名称,格式为 shard_name|replica_name

SYSTEM CLEAR|DROP UNCOMPRESSED CACHE

清除未压缩数据缓存。 可通过查询/用户/profile 级设置 use_uncompressed_cache 启用或禁用未压缩数据缓存。 其大小可通过服务器级设置 uncompressed_cache_size 配置。

SYSTEM CLEAR|DROP 编译 expression 缓存

清除已编译表达式缓存。 可通过查询/用户/profile 级设置 compile_expressions 启用或禁用已编译表达式缓存。

SYSTEM CLEAR|DROP QUERY CONDITION CACHE

清除查询条件缓存。

SYSTEM CLEAR|DROP ENCRYPTION HEADERS CACHE

清除加密头缓存。该缓存保存从加密文件开头读取的加密头,供 Experimental use_reader_executor 读取路径使用,以避免重复读取;其大小由服务器级设置 encryption_header_cache_size 配置。

SYSTEM CLEAR|DROP 查询缓存

SYSTEM CLEAR QUERY CACHE;
SYSTEM CLEAR QUERY CACHE TAG '<tag>'

清除查询缓存。 如果指定了标签,则仅删除带有该标签的查询缓存条目。

SYSTEM CLEAR|DROP FORMAT SCHEMA CACHE

清除从 format_schema_path 加载的 schema 缓存。

支持的目标:

  • Protobuf:从内存中移除已导入的 Protobuf 消息定义。
  • Files:删除本地 format_schema_path 中缓存的 schema 文件,这些文件会在 format_schema_source 设置为 query 时生成。 注意:如果未指定目标,则会同时清除这两类缓存。
SYSTEM CLEAR|DROP FORMAT SCHEMA CACHE [FOR Protobuf/Files]

SYSTEM FLUSH LOGS

将缓冲的日志消息刷写到系统表中,例如 system.query_log。该操作主要用于调试,因为大多数系统表默认的刷写时间间隔为 7.5 秒。 即使消息队列为空,也会创建系统表。

SYSTEM FLUSH LOGS [ON CLUSTER cluster_name] [log_name|[database.table]] [, ...]

如果你不想刷写所有内容,可以通过传入日志名称或其目标表,刷写一个或多个单独的日志:

SYSTEM FLUSH LOGS query_log, system.query_views_log;

SYSTEM RELOAD CONFIG

重新加载 ClickHouse 配置。用于配置存储在 ZooKeeper 中时的场景。请注意,SYSTEM RELOAD CONFIG 不会重新加载存储在 ZooKeeper 中的 USER 配置;它只会重新加载存储在 users.xml 中的 USER 配置。要重新加载所有 USER 配置,请使用 SYSTEM RELOAD USERS

SYSTEM RELOAD CONFIG [ON CLUSTER cluster_name]

SYSTEM RELOAD USERS

重新加载所有访问存储,包括:users.xml、本地磁盘访问存储、位于 ZooKeeper 中的复制访问存储。

SYSTEM RELOAD USERS [ON CLUSTER cluster_name]

SYSTEM SHUTDOWN

ClickHouse Cloud 不支持此功能

通常用于关闭 ClickHouse (类似于 service clickhouse-server stop / kill {$pid_clickhouse-server})

SYSTEM KILL

终止 ClickHouse 进程 (如 kill -9 {$ pid_clickhouse-server})

SYSTEM INSTRUMENT

使用 LLVM 的 XRay 功能管理插桩点;该功能仅在以 ENABLE_XRAY=1 构建 ClickHouse 时可用。 这使得无需修改源代码,也能以极低开销在生产环境中进行调试和性能分析。 在未添加任何插桩点时,性能损耗几乎可以忽略不计,因为它只会在长度超过 200 条指令的函数序言和结语处, 额外增加一次跳转到附近地址的操作。

SYSTEM INSTRUMENT ADD

添加一个新的插桩点。已插桩的函数可在 system.instrumentation 系统表中查看。可以为同一函数添加多个 handler,它们会按插桩添加的顺序依次执行。 要进行插桩的函数可从 system.symbols 系统表中获取。

可向函数添加三种不同类型的 handler:

语法

SYSTEM INSTRUMENT ADD FUNCTION HANDLER [ARGUMENTS]

其中,FUNCTION 可以是任意函数,或函数名的一部分 (子串) ,例如 QueryMetricLog::startQuery;而 handler 则为以下之一

LOG

在函数的 ENTRYEXIT 时,打印作为参数传入的文本以及堆栈跟踪。

SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' LOG ENTRY 'this is a log printed at entry'
SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' LOG EXIT 'this is a log printed at exit'

SLEEP

ENTRYEXIT 时休眠固定秒数:

SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' SLEEP ENTRY 0.5

或者,如需使用按均匀分布随机生成的秒数,请提供以空格分隔的最小值和最大值:

SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' SLEEP ENTRY 0 1

PROFILE

用于衡量函数从 ENTRYEXIT 之间所花费的时间。 性能分析结果存储在 system.trace_log 中,并可转换为 Chrome Event Trace Format

SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' PROFILE

SYSTEM INSTRUMENT REMOVE

可使用以下方式移除单个插桩点:

SYSTEM INSTRUMENT REMOVE ID

通过 ALL 关键字对它们全部进行操作:

SYSTEM INSTRUMENT REMOVE ALL

子查询返回的一组 ID:

SYSTEM INSTRUMENT REMOVE (SELECT id FROM system.instrumentation WHERE handler = 'log')

或所有与给定的 function_name 匹配的插桩点:

SYSTEM INSTRUMENT REMOVE 'QueryMetricLog::startQuery'

可从 system.instrumentation 系统表中获取插桩点信息。

管理分布式表

ClickHouse 可以管理Distributed表。当用户向这些表插入数据时,ClickHouse 会先为需要发送到集群节点的数据创建一个队列,然后再异步发送。你可以使用 STOP DISTRIBUTED SENDSFLUSH DISTRIBUTEDSTART DISTRIBUTED SENDS 查询来控制队列处理。你也可以通过 distributed_foreground_insert 设置,以同步方式向分布式表插入数据。

SYSTEM STOP DISTRIBUTED SENDS

禁用向分布式表插入数据时的后台数据分发。

SYSTEM STOP DISTRIBUTED SENDS [db.]<distributed_table_name> [ON CLUSTER cluster_name]

SYSTEM FLUSH DISTRIBUTED

强制 ClickHouse 以同步方式将数据发送到集群节点。如果有任何节点不可用,ClickHouse 会抛出异常并停止执行查询。你可以重试该查询,直到成功;当所有节点恢复在线后,查询就会成功。

你也可以通过 SETTINGS 子句覆盖某些设置,这有助于规避一些临时限制,例如 max_concurrent_queries_for_all_usersmax_memory_usage

SYSTEM FLUSH DISTRIBUTED [db.]<distributed_table_name> [ON CLUSTER cluster_name] [SETTINGS ...]

SYSTEM START DISTRIBUTED SENDS

启用向分布式表插入数据时的后台数据分发。

SYSTEM START DISTRIBUTED SENDS [db.]<distributed_table_name> [ON CLUSTER cluster_name]

SYSTEM STOP LISTEN

关闭套接字,并在指定端口上以指定协议优雅地终止与服务器的现有连接。

但如果未在 clickhouse-server 配置中指定相应的协议设置,此命令将不会生效。

SYSTEM STOP LISTEN [ON CLUSTER cluster_name] [QUERIES ALL | QUERIES DEFAULT | QUERIES CUSTOM | TCP | TCP WITH PROXY | TCP SECURE | HTTP | HTTPS | MYSQL | GRPC | POSTGRESQL | PROMETHEUS | CUSTOM 'protocol']
  • 如果指定了 CUSTOM 'protocol' 修饰符,则会停止在服务器配置的 protocols 部分中定义的、名称为指定值的自定义协议。
  • 如果指定了 QUERIES ALL [EXCEPT .. [,..]] 修饰符,则会停止所有协议,除非在 EXCEPT 子句中指定了排除项。
  • 如果指定了 QUERIES DEFAULT [EXCEPT .. [,..]] 修饰符,则会停止所有默认协议,除非在 EXCEPT 子句中指定了排除项。
  • 如果指定了 QUERIES CUSTOM [EXCEPT .. [,..]] 修饰符,则会停止所有自定义协议,除非在 EXCEPT 子句中指定了排除项。

SYSTEM START LISTEN

允许在指定协议上建立新的连接。

但是,如果指定端口和协议上的 server 不是通过 SYSTEM STOP LISTEN 命令停止监听的,则此命令不会生效。

SYSTEM START LISTEN [ON CLUSTER cluster_name] [QUERIES ALL | QUERIES DEFAULT | QUERIES CUSTOM | TCP | TCP WITH PROXY | TCP SECURE | HTTP | HTTPS | MYSQL | GRPC | POSTGRESQL | PROMETHEUS | CUSTOM 'protocol']

管理 MergeTree 表

ClickHouse 支持管理 MergeTree 表中的后台进程。

SYSTEM STOP MERGES

ClickHouse Cloud 不支持此功能

可停止 MergeTree 家族中的表的后台合并:

SYSTEM STOP MERGES [ON CLUSTER cluster_name] [ON VOLUME <volume_name> | [db.]merge_tree_family_table_name]

SYSTEM START MERGES

ClickHouse Cloud 不支持此功能

可用于启动 MergeTree 家族中的表的后台合并:

SYSTEM START MERGES [ON CLUSTER cluster_name] [ON VOLUME <volume_name> | [db.]merge_tree_family_table_name]

SYSTEM STOP TTL MERGES

ClickHouse Cloud 不支持此功能

可停止 MergeTree 家族中的表根据 TTL expression 在后台删除旧数据: 即使表不存在或表未使用 MergeTree 引擎,也会返回 Ok.。当数据库不存在时,会返回错误:

SYSTEM STOP TTL MERGES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]

SYSTEM START TTL MERGES

ClickHouse Cloud 不支持此功能

可为 MergeTree 家族中的表按 TTL expression 启动后台旧数据删除: 即使表不存在,也会返回 Ok.。如果数据库不存在,则返回错误:

SYSTEM START TTL MERGES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]

SYSTEM STOP MOVES

用于停止对 MergeTree 家族中的表按照带有 TO VOLUME 或 TO DISK 子句的表 TTL 表达式执行的后台数据移动: 即使表不存在,也会返回 Ok.。如果数据库不存在,则会返回错误:

SYSTEM STOP MOVES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]

SYSTEM START MOVES

可为 MergeTree 家族中的表启动后台数据移动,这些移动依据带有 TO VOLUME 和 TO DISK 子句的表 TTL 表达式执行: 即使表不存在,也会返回 Ok.。当数据库不存在时,则返回错误:

SYSTEM START MOVES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]

SYSTEM UNFREEZE

从所有磁盘中清除具有指定名称的冻结备份。有关解冻单个 parts 的更多信息,请参见 ALTER TABLE table_name UNFREEZE WITH NAME

SYSTEM UNFREEZE WITH NAME <backup_name>

SYSTEM WAIT LOADING PARTS

等待,直到表中所有异步加载的数据分区片段 (过期数据分区片段) 均已完成加载。

SYSTEM WAIT LOADING PARTS [ON CLUSTER cluster_name] [db.]merge_tree_family_table_name

管理 ReplicatedMergeTree 表

ClickHouse 可以管理 ReplicatedMergeTree 表中与后台复制相关的进程。

SYSTEM STOP FETCHES

ClickHouse Cloud 不支持此功能

可停止 ReplicatedMergeTree 家族表中已插入 parts 的后台拉取操作: 无论表引擎为何,甚至表或数据库不存在,始终返回 Ok.

SYSTEM STOP FETCHES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM START FETCHES

ClickHouse Cloud 不支持此功能

可为 ReplicatedMergeTree 家族中的表启动针对已插入 parts 的后台拉取: 无论表引擎是什么,甚至表或数据库不存在,也始终返回 Ok.

SYSTEM START FETCHES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM STOP REPLICATED SENDS

可停止 ReplicatedMergeTree 家族表中新插入的 parts 向集群中其他副本的后台发送:

SYSTEM STOP REPLICATED SENDS [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM START REPLICATED SENDS

可为 ReplicatedMergeTree 家族中的表启动后台发送,将新插入的 parts 发送到集群中的其他副本:

SYSTEM START REPLICATED SENDS [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM STOP REPLICATION QUEUES

可停止存储在 Zookeeper 中、供 ReplicatedMergeTree 家族表使用的复制队列里的后台拉取任务。可能的后台任务类型包括:合并、拉取、变更,以及带有 ON CLUSTER 子句的 DDL 语句:

SYSTEM STOP REPLICATION QUEUES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM START REPLICATION QUEUES

可为 ReplicatedMergeTree 家族中的表启动存储在 ZooKeeper 中的复制队列里的后台任务。可能的后台任务类型包括:合并、拉取、变更,以及带有 ON CLUSTER 子句的 DDL 语句:

SYSTEM START REPLICATION QUEUES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM STOP PULLING REPLICATION LOG

停止将新条目从复制日志加载到 ReplicatedMergeTree 表的复制队列中。

SYSTEM STOP PULLING REPLICATION LOG [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM START PULLING REPLICATION LOG

撤销 SYSTEM STOP PULLING REPLICATION LOG 的效果。

SYSTEM START PULLING REPLICATION LOG [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]

SYSTEM SYNC REPLICA

等待 ReplicatedMergeTree 表与集群中的其他副本完成同步,但等待时间不超过 receive_timeout 秒。

SYSTEM SYNC REPLICA [ON CLUSTER cluster_name] [db.]replicated_merge_tree_family_table_name [IF EXISTS] [STRICT | LIGHTWEIGHT [FROM 'srcReplica1'[, 'srcReplica2'[, ...]]] | PULL]

运行此语句后,[db.]replicated_merge_tree_family_table_name 会将公共复制日志中的命令拉取到自己的复制队列中,然后该查询会一直等待,直到副本处理完所有已拉取的命令。支持以下修饰符:

  • 使用 IF EXISTS (自 25.6 起可用) 时,如果表不存在,查询不会抛出错误。这在向集群中添加新副本时很有用:此时它可能已经属于集群配置的一部分,但表仍在创建和同步过程中。
  • 如果指定了 STRICT 修饰符,则查询会等待复制队列清空。如果复制队列中持续出现新的条目,则 STRICT 版本可能永远不会成功。
  • 如果指定了 LIGHTWEIGHT 修饰符,则查询仅等待 GET_PARTATTACH_PARTDROP_RANGEREPLACE_RANGEDROP_PART 条目处理完成。 此外,LIGHTWEIGHT 修饰符还支持可选的 FROM 'srcReplicas' 子句,其中 'srcReplicas' 是以逗号分隔的源副本名称列表。此扩展可实现更有针对性的同步,只关注源自指定源副本的复制任务。
  • 如果指定了 PULL 修饰符,则查询会从 ZooKeeper 拉取新的复制队列条目,但不会等待任何内容被处理。

SYNC DATABASE REPLICA

等待指定的Replicated 数据库应用该数据库 DDL 队列中的所有 schema 变更。

语法

SYSTEM SYNC DATABASE REPLICA replicated_database_name;

SYSTEM RESTART REPLICA

可重新初始化 ReplicatedMergeTree 表的 Zookeeper 会话状态;系统会将当前状态与作为事实来源的 Zookeeper 进行比较,并在需要时向 Zookeeper 队列添加任务。 基于 ZooKeeper 数据初始化复制队列的方式与 ATTACH TABLE 语句相同。在短时间内,该表将暂时无法执行任何操作。

SYSTEM RESTART REPLICA [ON CLUSTER cluster_name] [db.]replicated_merge_tree_family_table_name

SYSTEM RESTORE REPLICA

如果数据[可能]仍然存在,但 ZooKeeper 元数据已丢失,则可恢复副本。

仅适用于只读的 ReplicatedMergeTree 表。

可在以下情况发生后执行该查询:

  • ZooKeeper 根路径 / 丢失。
  • 副本路径 /replicas 丢失。
  • 单个副本路径 /replicas/replica_name/ 丢失。

副本会附加在本地找到的 parts,并将这些 parts 的信息发送到 ZooKeeper。 如果副本上的 parts 在元数据丢失前就已存在,且未过期,则不会从其他副本重新拉取 (因此,恢复副本并不意味着要通过网络重新下载所有数据) 。

SYSTEM RESTORE DATABASE REPLICA

在[可能]存在数据但 Zookeeper 元数据已丢失时,恢复副本。

语法

SYSTEM RESTORE DATABASE REPLICA repl_db [ON CLUSTER cluster]

示例

CREATE DATABASE repl_db
ENGINE=Replicated("/clickhouse/repl_db", shard1, replica1);

CREATE TABLE repl_db.test_table (n UInt32)
ENGINE = ReplicatedMergeTree
ORDER BY n PARTITION BY n % 10;

-- zookeeper_delete_path("/clickhouse/repl_db", recursive=True) <- 根节点丢失。

SYSTEM RESTORE DATABASE REPLICA repl_db;

语法

SYSTEM RESTORE REPLICA [db.]replicated_merge_tree_family_table_name [ON CLUSTER cluster_name]

另一种语法:

SYSTEM RESTORE REPLICA [ON CLUSTER cluster_name] [db.]replicated_merge_tree_family_table_name

示例

在多个服务器上创建表。若 ZooKeeper 中的副本元数据丢失,由于缺少元数据,该表会以只读方式附加。最后一个查询需要在每个副本上执行。

CREATE TABLE test(n UInt32)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/test/', '{replica}')
ORDER BY n PARTITION BY n % 10;

INSERT INTO test SELECT * FROM numbers(1000);

-- zookeeper_delete_path("/clickhouse/tables/test", recursive=True) <- 根节点丢失。

SYSTEM RESTART REPLICA test;
SYSTEM RESTORE REPLICA test;

另一种方法:

SYSTEM RESTORE REPLICA test ON CLUSTER cluster;

SYSTEM RESTART REPLICAS

可为所有 ReplicatedMergeTree 表重新初始化 Zookeeper 会话状态;它会将当前状态与 Zookeeper 中的状态进行比较,并以 Zookeeper 中的状态为准,必要时向 Zookeeper 队列添加任务

SYSTEM CLEAR|DROP FILESYSTEM CACHE

用于清空文件系统缓存。

SYSTEM CLEAR FILESYSTEM CACHE [ON CLUSTER cluster_name]

SYSTEM SYNC FILE CACHE

会执行 sync 系统调用。

SYSTEM SYNC FILE CACHE [ON CLUSTER cluster_name]

SYSTEM LOAD PRIMARY KEY

加载指定表或所有表的主键。

SYSTEM LOAD PRIMARY KEY [db.]name
SYSTEM LOAD PRIMARY KEY

SYSTEM UNLOAD PRIMARY KEY

卸载指定表或所有表的主键。

SYSTEM UNLOAD PRIMARY KEY [db.]name
SYSTEM UNLOAD PRIMARY KEY

管理可刷新的 materialized view

用于控制可刷新的 materialized view执行的后台任务的命令

在使用这类视图时,请留意 system.view_refreshes

SYSTEM STOP [REPLICATED] VIEW, STOP VIEWS

禁用指定视图或所有可刷新的视图的周期性刷新。如果当前有刷新正在进行,也会一并取消。

如果视图位于 Replicated 或 Shared 数据库 中,STOP VIEW 仅影响当前副本,而 STOP REPLICATED VIEW 会影响所有副本。

SYSTEM STOP VIEW [db.]name
SYSTEM STOP VIEWS

SYSTEM START [REPLICATED] VIEW, START VIEWS

为指定视图或所有可刷新的视图启用周期性刷新。不会立即触发刷新。

如果视图位于 Replicated 或 Shared database 中,START VIEW 会撤销 STOP VIEW 的效果,START REPLICATED VIEW 会撤销 STOP REPLICATED VIEW 的效果。START VIEW 还会撤销 PAUSE VIEW 的效果。

SYSTEM START VIEW [db.]name
SYSTEM START VIEWS

SYSTEM PAUSE VIEW, PAUSE VIEWS

禁用指定视图或所有可刷新的视图的周期性刷新。 与 SYSTEM STOP VIEW 不同,SYSTEM PAUSE VIEW 不会中断已在进行的刷新:当前正在运行的刷新会正常完成,只会阻止后续刷新。

可使用 SYSTEM START VIEWSYSTEM START VIEWS 恢复。

SYSTEM PAUSE VIEW [db.]name
SYSTEM PAUSE VIEWS

SYSTEM REFRESH VIEW

立即触发对指定视图的一次计划外刷新。

SYSTEM REFRESH VIEW [db.]name

SYSTEM WAIT VIEW

等待正在进行中的刷新完成。如果当前没有刷新在运行,则会立即返回。如果最近一次刷新尝试失败,则会报错。

可在创建新的可刷新materialized view 后 (不带 EMPTY 关键字) 立即使用,以等待初始刷新完成。

如果该视图位于 Replicated 或 Shared database 中,且刷新正在另一副本上运行,则会等待该刷新完成。

SYSTEM WAIT VIEW [db.]name

SYSTEM CANCEL VIEW

如果当前副本上的指定视图正在刷新,则中断并取消该刷新。否则,不执行任何操作。

SYSTEM CANCEL VIEW [db.]name

管理后台活动

用于控制单个表或服务器上所有此类表后台活动的引擎无关命令,涵盖:

对于可刷新materialized view,每个动词都是管理可刷新 Materialized View中对应 SYSTEM ... VIEW 命令的别名。因此,SYSTEM STOP [db.]name 的行为与 SYSTEM STOP VIEW [db.]name 完全相同,其他命令也同样如此。

按表形式和通配符形式对没有后台活动的表处理方式不同。按表形式 (SYSTEM STOP [db.]table) 中,如果指定的表既不是流式引擎,也不是可刷新materialized view,则会抛出错误。通配符形式会静默跳过此类表,因此始终可安全运行。

STOPCANCEL 会尽快中断消费。对于 KafkaRabbitMQNATS,它们会停止从来源读取数据,但不会中断已开始的插入:正在写入 materialized view 的块仍会完成并提交。S3QueueAzureQueue 会在同一管道中读取和插入数据。启用去重 (默认) 时,插入也会被取消,文件会在之后重新处理。禁用去重时,为避免重复行,正在处理的批次会完成并提交 (与上述引擎相同) 。已读取但尚未提交的数据会在之后再次消费,因此不会丢失数据;但核心 NATS (不含 JetStream) 例外,它无法重新投递,会丢弃这些数据。

PAUSE 不会中断正在进行的插入,因此通常不会导致数据丢失。核心 NATS 是例外:暂停会停止消费,并丢弃已接收但尚未插入的消息,而核心 NATS 无法重新投递这些消息。

SYSTEM STOP

停止后台活动并使其保持停止状态:中断当前正在运行的操作,在执行 SYSTEM START 前不再运行任何操作。等同于 PAUSE + CANCEL

SYSTEM STOP [db.]table
SYSTEM STOP ALL BACKGROUND

SYSTEM START

恢复活动,撤销之前执行的 SYSTEM STOPSYSTEM PAUSE。不会中断任何活动。

SYSTEM START [db.]table
SYSTEM START ALL BACKGROUND

SYSTEM PAUSE

阻止新的后台活动,但允许当前正在运行的操作完成。

SYSTEM PAUSE [db.]table
SYSTEM PAUSE ALL BACKGROUND

SYSTEM CANCEL

仅中断当前正在进行的活动,不会阻止后续活动——表仍会按计划继续刷新或消费。如果当前没有正在进行的活动,则不执行任何操作。

SYSTEM CANCEL [db.]table
SYSTEM CANCEL ALL BACKGROUND

SYSTEM REFRESH

在计划之外额外运行一个周期。对于流式表,即使表已停止或暂停,也会立即执行一次。对于可刷新materialized view,其行为与 SYSTEM REFRESH VIEW 相同:如果该 view 已停止,会记住此次刷新请求,并在 SYSTEM START 将其恢复后执行一次。

SYSTEM REFRESH [db.]table
SYSTEM REFRESH ALL BACKGROUND

特权

每条命令都需要相应目标引擎的特权:可刷新materialized view 需要 SYSTEM VIEWS,流式表需要 SYSTEM STREAMING ENGINES。两者均为 SYSTEM BACKGROUND 的子项,因此授予 SYSTEM BACKGROUND 后,便可控制所有此类表的后台活动。ALL BACKGROUND 形式仅适用于用户有权控制的表,其他表将被静默跳过。

SYSTEM FLUSH OBJECT STORAGE QUEUE

阻塞执行,直到指定文件被给定的 S3QueueAzureQueue 表处理完成,或永久失败为止。如果该文件已处理完成,则会立即返回。如果该文件已永久失败 (即所有重试都已耗尽) ,则会引发错误。

SYSTEM FLUSH OBJECT STORAGE QUEUE [db.]table_name PATH 'path'
Navigation