SYSTEM 语句
SYSTEM RELOAD EMBEDDED DICTIONARIES
重新加载所有 内部字典。默认情况下,内部字典是禁用的。始终返回 Ok.,无论内部字典更新的结果如何。
SYSTEM RELOAD DICTIONARIES
SYSTEM RELOAD DICTIONARIES 查询重新加载状态为 LOADED 的字典(请参阅 system.dictionaries 的 status 列),即之前已成功加载的字典。默认情况下,字典是延迟加载的(请参阅 dictionaries_lazy_load),因此它们不是在启动时自动加载,而是在首次通过使用 dictGet 函数或使用 ENGINE = Dictionary 的表进行 SELECT 查询时初始化。
语法
SYSTEM RELOAD DICTIONARY
完全重新加载字典 dictionary_name,无论字典的状态如何(LOADED / NOT_LOADED / FAILED)。始终返回 Ok.,无论更新字典的结果如何。
可以通过查询 system.dictionaries 表来检查字典的状态。
SYSTEM RELOAD MODELS
此语句和 SYSTEM RELOAD MODEL 只是从 clickhouse-library-bridge 中卸载 catboost 模型。函数 catboostEvaluate() 在首次访问时加载模型(如果尚未加载)。
卸载所有 CatBoost 模型。
语法
SYSTEM RELOAD MODEL
卸载位于 model_path 的 CatBoost 模型。
语法
SYSTEM RELOAD FUNCTIONS
重新加载所有已注册的 可执行的用户自定义函数,或从配置文件重新加载其中一个。
语法
SYSTEM RELOAD ASYNCHRONOUS METRICS
重新计算所有 异步指标。由于异步指标是根据设置 asynchronous_metrics_update_period_s 定期更新的,因此通常不需要使用此语句手动更新它们。
SYSTEM CLEAR|DROP DNS CACHE
清除 ClickHouse 的内部 DNS 缓存。有时(对于旧版本的 ClickHouse)在更改基础设施(更改另一个 ClickHouse 服务器的 IP 地址或字典使用的服务器)时,需要使用此命令。
为了更方便(自动)的缓存管理,请参阅 disable_internal_dns_cache、dns_cache_max_entries、dns_cache_update_period 参数。
SYSTEM CLEAR|DROP MARK CACHE
清除标记缓存。
SYSTEM CLEAR|DROP ICEBERG METADATA CACHE
清除 iceberg 元数据缓存。
SYSTEM CLEAR|DROP TEXT INDEX CACHES
清除文本索引的头部、字典和发布物缓存。
如果您想单独删除其中一个缓存,可以运行
SYSTEM CLEAR TEXT INDEX HEADER CACHE,SYSTEM CLEAR TEXT INDEX DICTIONARY CACHE,或SYSTEM CLEAR TEXT INDEX POSTINGS CACHE
SYSTEM DROP REPLICA
可以使用以下语法删除 ReplicatedMergeTree 表的死副本
这些查询将删除 ZooKeeper 中的 ReplicatedMergeTree 副本路径。当副本已死并且无法通过 DROP TABLE 从 ZooKeeper 中删除其元数据(因为不再存在该表)时,这很有用。它只会删除非活动/陈旧的副本,并且无法删除本地副本,请使用 DROP TABLE 删除本地副本。DROP REPLICA 不会删除任何表,也不会从磁盘中删除任何数据或元数据。
第一个删除 database.table 表的 'replica_name' 副本的元数据。第二个对数据库中的所有复制表执行相同的操作。第三个对本地服务器上的所有复制表执行相同的操作。第四个在所有其他表的副本都被删除时,用于删除死副本的元数据。必须明确指定表路径。它必须与在表创建时传递给 ReplicatedMergeTree 引擎的第一个参数相同的路径。
SYSTEM DROP DATABASE REPLICA
可以使用以下语法删除 Replicated 数据库的死副本
与 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 格式的完整副本名称。
SYSTEM CLEAR|DROP UNCOMPRESSED CACHE
清除未压缩的数据缓存。未压缩的数据缓存通过查询/用户/配置文件级别的设置 use_uncompressed_cache 启用/禁用。其大小可以使用服务器级别的设置 uncompressed_cache_size 进行配置。
SYSTEM CLEAR|DROP COMPILED EXPRESSION CACHE
清除编译表达式缓存。编译表达式缓存通过查询/用户/配置文件级别的设置 compile_expressions 启用/禁用。
SYSTEM CLEAR|DROP QUERY CONDITION CACHE
清除查询条件缓存。
SYSTEM CLEAR|DROP QUERY CACHE
清除 查询缓存。如果指定了标签,则仅删除具有指定标签的查询缓存条目。
SYSTEM CLEAR|DROP FORMAT SCHEMA CACHE
清除从 format_schema_path 加载的模式缓存。
支持的目标
- Protobuf:从内存中删除导入的 Protobuf 消息定义。
- 文件:删除缓存在本地存储在
format_schema_path中的模式文件,在format_schema_source设置为query时生成。注意:如果未指定目标,则将清除两个缓存。
SYSTEM FLUSH LOGS
将缓冲的日志消息刷新到系统表,例如 system.query_log。主要用于调试,因为大多数系统表都有默认的刷新间隔 7.5 秒。即使消息队列为空,这也会创建系统表。
如果您不想刷新所有内容,可以通过传递它们的名称或目标表来刷新一个或多个单独的日志
SYSTEM RELOAD CONFIG
重新加载 ClickHouse 配置。用于配置存储在 ZooKeeper 中时。请注意,SYSTEM RELOAD CONFIG 不会重新加载存储在 ZooKeeper 中的 USER 配置,它仅重新加载存储在 users.xml 中的 USER 配置。要重新加载所有 USER 配置,请使用 SYSTEM RELOAD USERS
SYSTEM RELOAD USERS
重新加载所有访问存储,包括:users.xml、本地磁盘访问存储、复制的(在 ZooKeeper 中)访问存储。
SYSTEM SHUTDOWN
正常关闭 ClickHouse(如 service clickhouse-server stop / kill {$pid_clickhouse-server})
SYSTEM KILL
中止 ClickHouse 进程(如 kill -9 {$ pid_clickhouse-server})
SYSTEM INSTRUMENT
使用 LLVM 的 XRay 功能管理检测点,当 ClickHouse 使用 ENABLE_XRAY=1 构建时可用。这使得在不修改源代码和最小化开销的情况下,能够在生产环境中进行调试和性能分析。如果没有添加任何检测点,性能损失可以忽略不计,因为它只会在那些长度超过 200 条指令的函数的序言和尾声处添加额外的跳转。
SYSTEM INSTRUMENT ADD
添加一个新的检测点。可以检查在 system.instrumentation 系统表中检测到的函数。可以为同一个函数添加多个处理程序,它们将按照添加检测点的顺序执行。要检测的函数可以从 system.symbols 系统表中获取。
有三种不同类型的处理程序可以添加到函数中
语法
其中 FUNCTION 是任何函数或函数子字符串,例如 QueryMetricLog::startQuery,处理程序是以下之一
LOG
在函数的 ENTRY 或 EXIT 时打印提供的文本和堆栈跟踪。
SLEEP
在函数的 ENTRY 或 EXIT 时休眠指定秒数
或者休眠在最小值和最大值之间均匀分布的随机秒数,最小值和最大值之间用空格分隔
PROFILE
测量函数 ENTRY 和 EXIT 之间的时间。分析结果存储在 system.trace_log 中,可以转换为 Chrome Event Trace Format 格式。
SYSTEM INSTRUMENT REMOVE
使用以下方法删除单个检测点
或者使用 ALL 参数删除所有检测点
从子查询中删除一组 ID
或者删除与给定函数名匹配的所有检测点
可以从 system.instrumentation 系统表中获取检测点信息。
管理分布式表
ClickHouse 可以管理 分布式 表。当用户将数据插入到这些表时,ClickHouse 首先创建一个队列,其中包含应发送到集群节点的数据,然后异步发送数据。可以使用 STOP DISTRIBUTED SENDS、FLUSH DISTRIBUTED 和 START DISTRIBUTED SENDS 查询来管理队列处理。还可以使用 distributed_foreground_insert 设置同步插入分布式数据。
SYSTEM STOP DISTRIBUTED SENDS
禁用将数据插入分布式表时的后台数据分发。
如果启用了 prefer_localhost_replica(默认情况下启用),则数据仍将插入到本地分片。
SYSTEM FLUSH DISTRIBUTED
强制 ClickHouse 将数据同步发送到集群节点。如果任何节点不可用,ClickHouse 将抛出异常并停止查询执行。您可以重试查询,直到它成功,这将在所有节点恢复在线时发生。
您还可以通过 SETTINGS 子句覆盖某些设置,这对于避免某些临时限制(例如 max_concurrent_queries_for_all_users 或 max_memory_usage)非常有用。
每个待处理的块都以初始 INSERT 查询的设置存储在磁盘上,因此有时您可能需要覆盖设置。
SYSTEM START DISTRIBUTED SENDS
启用将数据插入分布式表时的后台数据分发。
SYSTEM STOP LISTEN
关闭套接字并优雅地终止服务器上指定端口和协议的现有连接。
但是,如果 clickhouse-server 配置中未指定相应的协议设置,则此命令将无效。
- 如果指定了
CUSTOM 'protocol'修饰符,则将停止在服务器配置的协议部分中定义的具有指定名称的自定义协议。 - 如果指定了
QUERIES ALL [EXCEPT .. [,..]]修饰符,则将停止所有协议,除非使用EXCEPT子句指定。 - 如果指定了
QUERIES DEFAULT [EXCEPT .. [,..]]修饰符,则将停止所有默认协议,除非使用EXCEPT子句指定。 - 如果指定了
QUERIES CUSTOM [EXCEPT .. [,..]]修饰符,则将停止所有自定义协议,除非使用EXCEPT子句指定。
SYSTEM START LISTEN
允许在指定的协议上建立新的连接。
但是,如果服务器在指定的端口和协议上未通过 SYSTEM STOP LISTEN 命令停止,则此命令将无效。
管理 MergeTree 表
ClickHouse 可以管理 MergeTree 表中的后台进程。
SYSTEM STOP MERGES
提供停止 MergeTree 系列表中表的后台合并的可能性
DETACH / ATTACH 表即使在之前为所有 MergeTree 表停止合并的情况下,也会启动表的后台合并。
SYSTEM START MERGES
提供启动 MergeTree 系列表中表的后台合并的可能性
SYSTEM STOP TTL MERGES
提供停止 MergeTree 系列表中根据 TTL 表达式 删除旧数据的后台合并的可能性:即使表不存在或表没有 MergeTree 引擎,也返回 Ok. 数据库不存在时返回错误
SYSTEM START TTL MERGES
提供启动 MergeTree 系列表中根据 TTL 表达式 删除旧数据的后台合并的可能性:即使表不存在,也返回 Ok. 数据库不存在时返回错误
SYSTEM STOP MOVES
提供停止 MergeTree 系列表中根据 带有 TO VOLUME 或 TO DISK 子句的表 TTL 表达式 后台移动数据的可能性:即使表不存在,也返回 Ok. 数据库不存在时返回错误
SYSTEM START MOVES
提供启动 MergeTree 系列表中根据 带有 TO VOLUME 和 TO DISK 子句的表 TTL 表达式 后台移动数据的可能性:即使表不存在,也返回 Ok. 数据库不存在时返回错误
SYSTEM SYSTEM UNFREEZE
从所有磁盘中清除具有指定名称的冻结备份。有关在 ALTER TABLE table_name UNFREEZE WITH NAME 中解冻单个分区的更多信息
SYSTEM WAIT LOADING PARTS
等待表的所有异步加载数据部分(过时数据部分)变为已加载状态。
管理 ReplicatedMergeTree 表
ClickHouse 可以管理 ReplicatedMergeTree 表中的后台复制相关进程。
SYSTEM STOP FETCHES
提供停止 ReplicatedMergeTree 系列表中表的插入部分后台获取的可能性:无论表引擎如何,甚至如果表或数据库不存在,始终返回 Ok.
SYSTEM START FETCHES
为 ReplicatedMergeTree 系列的表插入的部分提供启动后台获取的可能性:无论表引擎如何,甚至如果表或数据库不存在,始终返回 Ok.
SYSTEM STOP REPLICATED SENDS
为 ReplicatedMergeTree 系列的表提供停止将新插入的部分发送到集群中其他副本的后台任务的可能性
SYSTEM START REPLICATED SENDS
为 ReplicatedMergeTree 系列的表提供启动将新插入的部分发送到集群中其他副本的后台任务的可能性
SYSTEM STOP REPLICATION QUEUES
为 ReplicatedMergeTree 系列的表提供停止从存储在 Zookeeper 中的复制队列中获取后台任务的可能性。可能的后台任务类型 - 合并、获取、变异、带有 ON CLUSTER 子句的 DDL 语句
SYSTEM START REPLICATION QUEUES
为 ReplicatedMergeTree 系列的表提供启动从存储在 Zookeeper 中的复制队列中获取后台任务的可能性。可能的后台任务类型 - 合并、获取、变异、带有 ON CLUSTER 子句的 DDL 语句
SYSTEM STOP PULLING REPLICATION LOG
停止将新的条目从复制日志加载到 ReplicatedMergeTree 表中的复制队列中。
SYSTEM START PULLING REPLICATION LOG
取消 SYSTEM STOP PULLING REPLICATION LOG。
SYSTEM SYNC REPLICA
等待 ReplicatedMergeTree 表与集群中的其他副本同步,但不会超过 receive_timeout 秒。
运行此语句后,[db.]replicated_merge_tree_family_table_name 从公共复制日志中将其自己的复制队列中获取命令,然后查询等待副本处理所有获取的命令。支持以下修饰符
- 使用
IF EXISTS(自 25.6 起可用),如果表不存在,查询将不会抛出错误。当将新副本添加到集群时,当它已经成为集群配置的一部分但仍在创建和同步表的过程中时,这很有用。 - 如果指定了
STRICT修饰符,则查询将等待复制队列变为空。如果新的条目不断出现在复制队列中,则STRICT版本可能永远无法成功。 - 如果指定了
LIGHTWEIGHT修饰符,则查询仅等待GET_PART、ATTACH_PART、DROP_RANGE、REPLACE_RANGE和DROP_PART条目被处理。此外,LIGHTWEIGHT 修饰符支持一个可选的 FROM 'srcReplicas' 子句,其中 'srcReplicas' 是一个逗号分隔的源副本名称列表。此扩展允许通过仅关注来自指定源副本的复制任务来进行更有针对性的同步。 - 如果指定了
PULL修饰符,则查询从 ZooKeeper 拉取新的复制队列条目,但不等待任何内容被处理。
SYNC DATABASE REPLICA
等待指定的 复制的数据库 应用来自该数据库的 DDL 队列中的所有模式更改。
语法
SYSTEM RESTART REPLICA
为 ReplicatedMergeTree 表提供重新初始化 Zookeeper 会话状态的可能性,将当前状态与 Zookeeper 作为事实来源进行比较,并在需要时将任务添加到 Zookeeper 队列中。基于 ZooKeeper 数据的复制队列初始化以与 ATTACH TABLE 语句相同的方式进行。在短时间内,该表将无法进行任何操作。
SYSTEM RESTORE REPLICA
如果数据[可能]存在但 Zookeeper 元数据丢失,则恢复副本。
仅适用于只读 ReplicatedMergeTree 表。
可以在以下情况下执行查询
- ZooKeeper 根目录
/丢失。 - 副本路径
/replicas丢失。 - 单个副本路径
/replicas/replica_name/丢失。
副本附加本地找到的部分并将有关它们的信息发送到 Zookeeper。副本在元数据丢失之前存在的部分如果未过时,则不会从其他副本重新获取(因此副本恢复并不意味着通过网络重新下载所有数据)。
所有状态下的部分都移动到 detached/ 文件夹。在数据丢失之前处于活动状态(已提交)的部分将被附加。
SYSTEM RESTORE DATABASE REPLICA
如果数据[可能]存在但 Zookeeper 元数据丢失,则恢复副本。
语法
示例
语法
替代语法
示例
在多个服务器上创建表。在 ZooKeeper 中副本的元数据丢失后,该表将作为只读附加,因为缺少元数据。最后一个查询需要在每个副本上执行。
另一种方法
SYSTEM RESTART REPLICAS
为所有 ReplicatedMergeTree 表提供重新初始化 Zookeeper 会话状态的可能性,将当前状态与 Zookeeper 作为事实来源进行比较,并在需要时将任务添加到 Zookeeper 队列中
SYSTEM CLEAR|DROP FILESYSTEM CACHE
允许删除文件系统缓存。
SYSTEM SYNC FILE CACHE
过于繁重且存在滥用的可能性。
将执行 sync syscall。
SYSTEM LOAD PRIMARY KEY
加载给定表或所有表的索引键。
SYSTEM UNLOAD PRIMARY KEY
卸载给定表或所有表的索引键。
管理可刷新物化视图
控制由 可刷新物化视图 执行的后台任务的命令
在使用它们时,请关注 system.view_refreshes。
SYSTEM REFRESH VIEW
触发给定视图的立即非计划刷新。
SYSTEM WAIT VIEW
等待当前运行的刷新完成。如果刷新失败,则抛出异常。如果没有正在运行的刷新,则立即完成,如果之前的刷新失败,则抛出异常。
SYSTEM STOP [REPLICATED] VIEW, STOP VIEWS
禁用给定视图或所有可刷新视图的定期刷新。如果正在进行刷新,则取消它。
如果视图位于 Replicated 或 Shared 数据库中,STOP VIEW 仅影响当前副本,而 STOP REPLICATED VIEW 影响所有副本。
停止状态不会在服务器重启后保留。重启后,视图将恢复其配置的刷新计划。在 Replicated 或 Shared 数据库中,SYSTEM STOP VIEW 仅影响当前副本。使用 SYSTEM STOP REPLICATED VIEW 在所有副本上停止刷新。
SYSTEM START [REPLICATED] VIEW, START VIEWS
启用给定视图或所有可刷新视图的定期刷新。不会触发立即刷新。
如果视图位于 Replicated 或 Shared 数据库中,START VIEW 将撤消 STOP VIEW 的影响,而 START REPLICATED VIEW 将撤消 STOP REPLICATED VIEW 的影响。
SYSTEM CANCEL VIEW
如果当前副本上给定视图有正在进行的刷新,则中断并取消它。否则不执行任何操作。
SYSTEM WAIT VIEW
等待正在运行的刷新完成。如果没有正在运行的刷新,则立即返回。如果最新的刷新尝试失败,则报告错误。
可以在创建新的可刷新物化视图(不使用 EMPTY 关键字)后立即使用,以等待初始刷新完成。
如果视图位于 Replicated 或 Shared 数据库中,并且刷新正在另一个副本上运行,则等待该刷新完成。