有没有办法杀死ClickHouse中的空闲查询?我有一个永远不会完成的OPTIMIZE查询(因为它针对ReplicatedMergeTree表运行)阻塞了我需要删除的表。
答案 0 :(得分:5)
是的,有一个replace_running_query选项。
简而言之,您可以在HTTP请求中添加query_id
参数,例如:
http://localhost:8123/?query=SELECT * FROM system.numbers LIMIT 100000000& replace_running_query=1&query_id=example
然后执行第二个HTTP请求,使用相同的query_id
:
http://localhost:8123/?query=SELECT 1&replace_running_query=1&query_id=example
服务器将取消第一个查询并改为运行第二个查询。
您可以覆盖配置文件中的选项(默认情况下已禁用),以免将其置于请求参数中。
答案 1 :(得分:1)
我通常会跑步
SELECT query_id, query from system.processes;
查找正在运行的查询。从该列表中,我发现要杀死然后执行的查询query_id
KILL QUERY where query_id = '<id>';
更多信息可以在Documentation on KILL QUERY
中找到要杀死变异,有类似的KILL MUTATION
。