SYSTEM 语句
RELOAD EMBEDDED DICTIONARIES
重新加载所有 内部字典。默认情况下,内部字典处于禁用状态。始终返回 Ok.
,无论内部字典更新的结果如何。
RELOAD DICTIONARIES
重新加载之前已成功加载的所有字典。默认情况下,字典是延迟加载的(参见 dictionaries_lazy_load),因此它们不是在启动时自动加载,而是在首次通过 dictGet 函数或从 ENGINE = Dictionary 的表进行 SELECT 访问时初始化。SYSTEM RELOAD DICTIONARIES
查询重新加载这些字典 (LOADED)。始终返回 Ok.
,无论字典更新的结果如何。
语法
SYSTEM RELOAD DICTIONARIES [ON CLUSTER cluster_name]
RELOAD DICTIONARY
完全重新加载字典 dictionary_name
,无论字典的状态(LOADED / NOT_LOADED / FAILED)如何。始终返回 Ok.
,无论更新字典的结果如何。
SYSTEM RELOAD DICTIONARY [ON CLUSTER cluster_name] dictionary_name
可以通过查询 system.dictionaries
表来检查字典的状态。
SELECT name, status FROM system.dictionaries;
RELOAD MODELS
此语句和 SYSTEM RELOAD MODEL
仅从 clickhouse-library-bridge 卸载 catboost 模型。如果模型尚未加载,函数 catboostEvaluate()
会在首次访问时加载模型。
卸载所有 CatBoost 模型。
语法
SYSTEM RELOAD MODELS [ON CLUSTER cluster_name]
RELOAD MODEL
卸载位于 model_path
的 CatBoost 模型。
语法
SYSTEM RELOAD MODEL [ON CLUSTER cluster_name] <model_path>
RELOAD FUNCTIONS
从配置文件中重新加载所有已注册的 可执行用户定义函数 或其中一个函数。
语法
RELOAD FUNCTIONS [ON CLUSTER cluster_name]
RELOAD FUNCTION [ON CLUSTER cluster_name] function_name
RELOAD ASYNCHRONOUS METRICS
重新计算所有 异步指标。由于异步指标根据设置 asynchronous_metrics_update_period_s 定期更新,因此通常不需要使用此语句手动更新它们。
RELOAD ASYNCHRONOUS METRICS [ON CLUSTER cluster_name]
DROP DNS CACHE
清除 ClickHouse 的内部 DNS 缓存。有时(对于旧版本的 ClickHouse),在更改基础设施(更改另一个 ClickHouse 服务器或字典使用的服务器的 IP 地址)时,需要使用此命令。
为了更方便(自动)地管理缓存,请参阅 disable_internal_dns_cache、dns_cache_max_entries、dns_cache_update_period 参数。
DROP MARK CACHE
清除标记缓存。
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 TABLE
删除本地副本。DROP REPLICA
不会删除任何表,也不会从磁盘中删除任何数据或元数据。
第一个命令删除 database.table
表的 'replica_name'
副本的元数据。第二个命令对数据库中的所有复制表执行相同的操作。第三个命令对本地服务器上的所有复制表执行相同的操作。第四个命令在表的所有其他副本都已删除时,用于删除死副本的元数据。它需要显式指定表路径。它必须与在表创建时传递给 ReplicatedMergeTree
引擎的第一个参数的路径相同。
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.clusters
中的 database_shard_name
和 database_replica_name
列中获取。如果缺少 FROM SHARD
子句,则 replica_name
必须是 shard_name|replica_name
格式的完整副本名称。
DROP UNCOMPRESSED CACHE
清除未压缩数据缓存。未压缩数据缓存通过查询/用户/配置文件级别的设置 use_uncompressed_cache 启用/禁用。其大小可以使用服务器级别的设置 uncompressed_cache_size 进行配置。
DROP COMPILED EXPRESSION CACHE
清除编译表达式缓存。编译表达式缓存通过查询/用户/配置文件级别的设置 compile_expressions 启用/禁用。
DROP QUERY CACHE
SYSTEM DROP QUERY CACHE;
SYSTEM DROP QUERY CACHE TAG '<tag>'
清除 查询缓存。如果指定了标签,则仅删除具有指定标签的查询缓存条目。
DROP FORMAT SCHEMA CACHE
清除从 format_schema_path 加载的模式的缓存。
支持的格式
- Protobuf
SYSTEM DROP FORMAT SCHEMA CACHE [FOR Protobuf]
FLUSH LOGS
将缓冲的日志消息刷新到系统表,例如 system.query_log。主要用于调试,因为大多数系统表的默认刷新间隔为 7.5 秒。即使消息队列为空,这也会创建系统表。
SYSTEM FLUSH LOGS [ON CLUSTER cluster_name]
RELOAD CONFIG
重新加载 ClickHouse 配置。当配置存储在 ZooKeeper 中时使用。请注意,SYSTEM RELOAD CONFIG
不会重新加载存储在 ZooKeeper 中的 USER
配置,它仅重新加载存储在 users.xml
中的 USER
配置。要重新加载所有 USER
配置,请使用 SYSTEM RELOAD USERS
SYSTEM RELOAD CONFIG [ON CLUSTER cluster_name]
RELOAD USERS
重新加载所有访问存储,包括:users.xml、本地磁盘访问存储、复制的(在 ZooKeeper 中)访问存储。
SYSTEM RELOAD USERS [ON CLUSTER cluster_name]
SHUTDOWN
正常关闭 ClickHouse(如 service clickhouse-server stop
/ kill {$pid_clickhouse-server}
)
KILL
中止 ClickHouse 进程(如 kill -9 {$ pid_clickhouse-server}
)
管理分布式表
ClickHouse 可以管理 分布式 表。当用户将数据插入这些表时,ClickHouse 首先创建应发送到集群节点的数据队列,然后异步发送数据。您可以使用 STOP DISTRIBUTED SENDS、FLUSH DISTRIBUTED 和 START DISTRIBUTED SENDS 查询来管理队列处理。您还可以使用 distributed_foreground_insert 设置同步插入分布式数据。
STOP DISTRIBUTED SENDS
禁用将数据插入分布式表时的后台数据分发。
SYSTEM STOP DISTRIBUTED SENDS [db.]<distributed_table_name> [ON CLUSTER cluster_name]
FLUSH DISTRIBUTED
强制 ClickHouse 同步将数据发送到集群节点。如果任何节点不可用,ClickHouse 将抛出异常并停止查询执行。您可以重试查询,直到成功为止,当所有节点都恢复在线时,就会发生这种情况。
您还可以通过 SETTINGS
子句覆盖某些设置,这对于避免某些临时限制(如 max_concurrent_queries_for_all_users
或 max_memory_usage
)很有用。
SYSTEM FLUSH DISTRIBUTED [db.]<distributed_table_name> [ON CLUSTER cluster_name] [SETTINGS ...]
每个待处理块都使用初始 INSERT 查询中的设置存储在磁盘中,这就是为什么有时您可能需要覆盖设置。
START DISTRIBUTED SENDS
启用将数据插入分布式表时的后台数据分发。
SYSTEM START DISTRIBUTED SENDS [db.]<distributed_table_name> [ON CLUSTER cluster_name]
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'
修饰符,则将停止服务器配置的协议部分中定义的具有指定名称的自定义协议。 - 如果指定了
QUERIES ALL [EXCEPT .. [,..]]
修饰符,则将停止所有协议,除非使用EXCEPT
子句指定。 - 如果指定了
QUERIES DEFAULT [EXCEPT .. [,..]]
修饰符,则将停止所有默认协议,除非使用EXCEPT
子句指定。 - 如果指定了
QUERIES CUSTOM [EXCEPT .. [,..]]
修饰符,则将停止所有自定义协议,除非使用EXCEPT
子句指定。
START LISTEN
允许在指定的协议上建立新连接。
但是,如果未使用 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 表中的后台进程。
STOP MERGES
提供停止 MergeTree 系列表中后台合并的可能性
SYSTEM STOP MERGES [ON CLUSTER cluster_name] [ON VOLUME <volume_name> | [db.]merge_tree_family_table_name]
DETACH / ATTACH
表将为表启动后台合并,即使之前已停止所有 MergeTree 表的合并也是如此。
START MERGES
提供启动 MergeTree 系列表中后台合并的可能性
SYSTEM START MERGES [ON CLUSTER cluster_name] [ON VOLUME <volume_name> | [db.]merge_tree_family_table_name]
STOP TTL MERGES
提供根据 TTL 表达式 停止 MergeTree 系列表中后台删除旧数据的可能性:即使表不存在或表没有 MergeTree 引擎,也返回 Ok.
。当数据库不存在时返回错误
SYSTEM STOP TTL MERGES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]
START TTL MERGES
提供根据 TTL 表达式 启动 MergeTree 系列表中后台删除旧数据的可能性:即使表不存在,也返回 Ok.
。当数据库不存在时返回错误
SYSTEM START TTL MERGES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]
STOP MOVES
提供根据 带有 TO VOLUME 或 TO DISK 子句的 TTL 表表达式 停止 MergeTree 系列表中后台移动数据的可能性:即使表不存在,也返回 Ok.
。当数据库不存在时返回错误
SYSTEM STOP MOVES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]
START MOVES
提供根据 带有 TO VOLUME 和 TO DISK 子句的 TTL 表表达式 启动 MergeTree 系列表中后台移动数据的可能性:即使表不存在,也返回 Ok.
。当数据库不存在时返回错误
SYSTEM START MOVES [ON CLUSTER cluster_name] [[db.]merge_tree_family_table_name]
SYSTEM UNFREEZE
从所有磁盘中清除具有指定名称的冻结备份。有关解冻单独部分的信息,请参阅 ALTER TABLE table_name UNFREEZE WITH NAME
SYSTEM UNFREEZE WITH NAME <backup_name>
WAIT LOADING PARTS
等待表的所有异步加载数据部分(过时的数据部分)加载完成。
SYSTEM WAIT LOADING PARTS [ON CLUSTER cluster_name] [db.]merge_tree_family_table_name
管理 ReplicatedMergeTree 表
ClickHouse 可以管理 ReplicatedMergeTree 表中与后台复制相关的进程。
STOP FETCHES
提供停止 ReplicatedMergeTree
系列表中已插入部分的后台获取的可能性:始终返回 Ok.
,无论表引擎如何,即使表或数据库不存在也是如此。
SYSTEM STOP FETCHES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
START FETCHES
提供启动 ReplicatedMergeTree
系列表中已插入部分的后台获取的可能性:始终返回 Ok.
,无论表引擎如何,即使表或数据库不存在也是如此。
SYSTEM START FETCHES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
STOP REPLICATED SENDS
提供停止 ReplicatedMergeTree
系列表中新插入部分的后台发送到集群中其他副本的可能性
SYSTEM STOP REPLICATED SENDS [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
START REPLICATED SENDS
提供启动 ReplicatedMergeTree
系列表中新插入部分的后台发送到集群中其他副本的可能性
SYSTEM START REPLICATED SENDS [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
STOP REPLICATION QUEUES
提供停止从存储在 Zookeeper 中 ReplicatedMergeTree
系列表的复制队列中获取后台任务的可能性。可能的后台任务类型 - 合并、获取、mutation、带有 ON CLUSTER 子句的 DDL 语句
SYSTEM STOP REPLICATION QUEUES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
START REPLICATION QUEUES
提供启动从存储在 Zookeeper 中 ReplicatedMergeTree
系列表的复制队列中获取后台任务的可能性。可能的后台任务类型 - 合并、获取、mutation、带有 ON CLUSTER 子句的 DDL 语句
SYSTEM START REPLICATION QUEUES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
STOP PULLING REPLICATION LOG
停止将新条目从复制日志加载到 ReplicatedMergeTree
表中的复制队列。
SYSTEM STOP PULLING REPLICATION LOG [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
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]
SYNC REPLICA
等待 ReplicatedMergeTree
表与集群中的其他副本同步,但不超过 receive_timeout
秒。
SYSTEM SYNC REPLICA [ON CLUSTER cluster_name] [db.]replicated_merge_tree_family_table_name [STRICT | LIGHTWEIGHT [FROM 'srcReplica1'[, 'srcReplica2'[, ...]]] | PULL]
运行此语句后,[db.]replicated_merge_tree_family_table_name
从公共复制日志中获取命令到其自己的复制队列中,然后查询等待直到副本处理完所有获取的命令。支持以下修饰符
- 如果指定了
STRICT
修饰符,则查询等待复制队列变为空。如果新条目不断出现在复制队列中,则STRICT
版本可能永远不会成功。 - 如果指定了
LIGHTWEIGHT
修饰符,则查询仅等待处理GET_PART
、ATTACH_PART
、DROP_RANGE
、REPLACE_RANGE
和DROP_PART
条目。此外,LIGHTWEIGHT 修饰符支持可选的 FROM 'srcReplicas' 子句,其中 'srcReplicas' 是以逗号分隔的源副本名称列表。此扩展允许通过仅关注来自指定源副本的复制任务来实现更有针对性的同步。 - 如果指定了
PULL
修饰符,则查询从 ZooKeeper 中拉取新的复制队列条目,但不等待任何条目被处理。
SYNC DATABASE REPLICA
等待指定的 复制数据库 应用来自该数据库的 DDL 队列的所有模式更改。
语法
SYSTEM SYNC DATABASE REPLICA replicated_database_name;
RESTART REPLICA
提供重新初始化 ReplicatedMergeTree
表的 Zookeeper 会话状态的可能性,将当前状态与作为真实来源的 Zookeeper 进行比较,并在需要时向 Zookeeper 队列添加任务。基于 ZooKeeper 数据初始化复制队列的方式与 ATTACH TABLE
语句相同。在短时间内,该表将不可用于任何操作。
SYSTEM RESTART REPLICA [ON CLUSTER cluster_name] [db.]replicated_merge_tree_family_table_name
RESTORE REPLICA
如果数据 [可能] 存在但 Zookeeper 元数据丢失,则恢复副本。
仅适用于只读 ReplicatedMergeTree
表。
可以在之后执行查询
- ZooKeeper 根目录
/
丢失。 - 副本路径
/replicas
丢失。 - 单个副本路径
/replicas/replica_name/
丢失。
副本附加本地找到的部分,并将有关它们的信息发送到 Zookeeper。如果未过时,则不会从其他副本重新获取元数据丢失之前副本上存在的部分(因此副本恢复并不意味着通过网络重新下载所有数据)。
所有状态的部分都移动到 detached/
文件夹。在数据丢失之前处于活动状态(已提交)的部分将被附加。
语法
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) <- root loss.
SYSTEM RESTART REPLICA test;
SYSTEM RESTORE REPLICA test;
另一种方式
SYSTEM RESTORE REPLICA test ON CLUSTER cluster;
RESTART REPLICAS
提供重新初始化所有 ReplicatedMergeTree
表的 Zookeeper 会话状态的可能性,将当前状态与作为真实来源的 Zookeeper 进行比较,并在需要时向 Zookeeper 队列添加任务
DROP FILESYSTEM CACHE
允许删除文件系统缓存。
SYSTEM DROP FILESYSTEM CACHE [ON CLUSTER cluster_name]
SYNC FILE CACHE
这太重了,并且有可能被滥用。
将执行 sync 系统调用。
SYSTEM SYNC FILE CACHE [ON CLUSTER cluster_name]
LOAD PRIMARY KEY
加载给定表或所有表的主键。
SYSTEM LOAD PRIMARY KEY [db.]name
SYSTEM LOAD PRIMARY KEY
UNLOAD PRIMARY KEY
卸载给定表或所有表的主键。
SYSTEM UNLOAD PRIMARY KEY [db.]name
SYSTEM UNLOAD PRIMARY KEY
管理可刷新物化视图
控制 可刷新物化视图 执行的后台任务的命令
在使用它们时,请密切关注 system.view_refreshes
。
REFRESH VIEW
触发给定视图的计划外立即刷新。
SYSTEM REFRESH VIEW [db.]name
REFRESH VIEW
等待当前正在运行的刷新完成。如果刷新失败,则抛出异常。如果没有刷新正在运行,则立即完成,如果之前的刷新失败,则抛出异常。
STOP VIEW, STOP VIEWS
禁用给定视图或所有可刷新视图的定期刷新。如果刷新正在进行中,也取消刷新。
SYSTEM STOP VIEW [db.]name
SYSTEM STOP VIEWS
START VIEW, START VIEWS
启用给定视图或所有可刷新视图的定期刷新。不会触发立即刷新。
SYSTEM START VIEW [db.]name
SYSTEM START VIEWS
CANCEL VIEW
如果给定视图有刷新正在进行中,则中断并取消刷新。否则,不执行任何操作。
SYSTEM CANCEL VIEW [db.]name
SYSTEM WAIT VIEW
等待正在运行的刷新完成。如果没有刷新正在运行,则立即返回。如果最新的刷新尝试失败,则报告错误。
可以在创建新的可刷新物化视图(不带 EMPTY 关键字)后立即使用,以等待初始刷新完成。
SYSTEM WAIT VIEW [db.]name