【发布时间】:2017-03-25 15:00:21
【问题描述】:
有什么方法可以杀死 ClickHouse 中的空闲查询?我有一个永远不会完成的 OPTIMIZE 查询(因为它正在针对 ReplicatedMergeTree 表运行)阻塞了我需要删除的表。
【问题讨论】:
标签: clickhouse
有什么方法可以杀死 ClickHouse 中的空闲查询?我有一个永远不会完成的 OPTIMIZE 查询(因为它正在针对 ReplicatedMergeTree 表运行)阻塞了我需要删除的表。
【问题讨论】:
标签: clickhouse
我经常跑步
SELECT query_id, query FROM system.processes;
查找正在运行的查询。从该列表中,我找到了我想要杀死然后执行的查询的query_id
KILL QUERY WHERE query_id = '<id>';
更多信息可以在Documentation on KILL QUERY找到
要杀死Mutation,有类似的KILL MUTATION。
【讨论】:
是的,有一个replace_running_query 选项。
简而言之,您可以将query_id 参数添加到您的HTTP 请求中,如下所示:
http://localhost:8123/?query=SELECT * FROM system.numbers LIMIT 100000000& replace_running_query=1&query_id=example
然后使用相同的query_id 执行第二个 HTTP 请求:
http://localhost:8123/?query=SELECT 1&replace_running_query=1&query_id=example
服务器将取消第一个查询并运行第二个查询。
您可以覆盖配置文件中的选项(默认情况下禁用)以摆脱将其放置在请求参数中。
【讨论】:
replace_running_query。顺便说一句,我不是系统管理员,所以我无法修改配置或打开 8123 端口。我要求系统管理员重新启动受影响的节点并且刚刚解决了问题(但并不理想)。