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
仅将 catboost 模型从 clickhouse-library-bridge 中卸载。如果模型尚未加载,则函数 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'
修饰符,则将停止在服务器配置的 protocols 部分中定义的具有指定名称的自定义协议。 - 如果指定了
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
提供停止 ReplicatedMergeTree
系列表中存储在 Zookeeper 中的复制队列中的后台获取任务的可能性。可能的后台任务类型 - 合并、获取、变异、带有 ON CLUSTER 子句的 DDL 语句
SYSTEM STOP REPLICATION QUEUES [ON CLUSTER cluster_name] [[db.]replicated_merge_tree_family_table_name]
START REPLICATION QUEUES
提供启动 ReplicatedMergeTree
系列表中存储在 Zookeeper 中的复制队列中的后台获取任务的可能性。可能的后台任务类型 - 合并、获取、变异、带有 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;
重启副本
提供重新初始化所有 ReplicatedMergeTree
表的 ZooKeeper 会话状态的可能性,将当前状态与 ZooKeeper 作为真实来源进行比较,并在需要时将任务添加到 ZooKeeper 队列中
删除文件系统缓存
允许删除文件系统缓存。
SYSTEM DROP FILESYSTEM CACHE [ON CLUSTER cluster_name]
同步文件缓存
这非常耗费资源,并且存在被误用的可能性。
将执行同步系统调用。
SYSTEM SYNC FILE CACHE [ON CLUSTER cluster_name]
卸载主键
卸载给定表或所有表的 primary keys。
SYSTEM UNLOAD PRIMARY KEY [db.]name
SYSTEM UNLOAD PRIMARY KEY
管理可刷新物化视图
控制由可刷新物化视图执行的后台任务的命令
在使用它们时,请关注system.view_refreshes
。
刷新视图
触发给定视图的立即计划外刷新。
SYSTEM REFRESH VIEW [db.]name
刷新视图
等待当前正在运行的刷新完成。如果刷新失败,则抛出异常。如果没有刷新正在运行,则立即完成,如果之前的刷新失败,则抛出异常。
停止视图,停止视图
禁用给定视图或所有可刷新视图的定期刷新。如果刷新正在进行,则也取消它。
SYSTEM STOP VIEW [db.]name
SYSTEM STOP VIEWS
启动视图,启动视图
为给定视图或所有可刷新视图启用定期刷新。不会触发立即刷新。
SYSTEM START VIEW [db.]name
SYSTEM START VIEWS
取消视图
如果给定视图正在进行刷新,则中断并取消它。否则什么也不做。
SYSTEM CANCEL VIEW [db.]name
系统等待视图
等待正在运行的刷新完成。如果没有刷新正在运行,则立即返回。如果最新的刷新尝试失败,则报告错误。
可以在创建新的可刷新物化视图后(没有 EMPTY 关键字)立即使用它,以等待初始刷新完成。
SYSTEM WAIT VIEW [db.]name