【问题标题】:How to kill a process (query) in ClickHouse如何在 ClickHouse 中终止进程(查询)
【发布时间】:2017-03-25 15:00:21
【问题描述】:

有什么方法可以杀死 ClickHouse 中的空闲查询?我有一个永远不会完成的 OPTIMIZE 查询(因为它正在针对 ReplicatedMergeTree 表运行)阻塞了我需要删除的表。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    我经常跑步

    SELECT query_id, query FROM system.processes;
    

    查找正在运行的查询。从该列表中,我找到了我想要杀死然后执行的查询的query_id

    KILL QUERY WHERE query_id = '<id>';
    

    更多信息可以在Documentation on KILL QUERY找到

    要杀死Mutation,有类似的KILL MUTATION

    【讨论】:

      【解决方案2】:

      是的,有一个replace_running_query 选项。

      简而言之,您可以将query_id 参数添加到您的HTTP 请求中,如下所示:

      http://localhost:8123/?query=SELECT * FROM system.numbers LIMIT 100000000&amp; replace_running_query=1&amp;query_id=example

      然后使用相同的query_id 执行第二个 HTTP 请求:

      http://localhost:8123/?query=SELECT 1&amp;replace_running_query=1&amp;query_id=example

      服务器将取消第一个查询并运行第二个查询。

      您可以覆盖配置文件中的选项(默认情况下禁用)以摆脱将其放置在请求参数中。

      【讨论】:

      • 我没有使用 HTTP 接口,但是 clickhouse-client 我认为不可能通过客户端使用replace_running_query。顺便说一句,我不是系统管理员,所以我无法修改配置或打开 8123 端口。我要求系统管理员重新启动受影响的节点并且刚刚解决了问题(但并不理想)。
      • @DamnWidget 顺便说一句,我创建了clickhouse-cli,它在 Ctrl+C 上使用相同的方法(使用 replace_running_query)杀死查询。嘿,感谢 Anaconda,我经常使用它!
      • 试试看谢谢!。我也经常使用 anaconda,这是我写它的主要原因 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多