Clickhouse KILL QUERY 永远挂起

标签 clickhouse clickhouse-client

具有以下潜在的无限时间执行查询。为什么它被发布到 Clickhouse 服务器是没有意义的。查询已经启动并且仍在运行:

SELECT Count("SN".*) FROM (SELECT sleepEachRow(3) FROM system.numbers) "SN"

好的,尝试查找关联的 query_id 或已经有一个。例如,query_id = 'd02f4bdb-8928-4347-8641-4da4b9c0f486'。让我们通过以下查询杀死它:

KILL QUERY WHERE query_id = 'd02f4bdb-8928-4347-8641-4da4b9c0f486' 

乍一看,实现的终止查询结果似乎没问题:

┌─kill_status─┬─query_id─────────────────────────────┬─user────┬─query────────────────────────────────────────────────────────────────────────┐
│ waiting     │ d02f4bdb-8928-4347-8641-4da4b9c0f486 │ default │ SELECT Count("SN".*) FROM (SELECT sleepEachRow(3) FROM system.numbers) "SN"; │
└─────────────┴──────────────────────────────────────┴─────────┴──────────────────────────────────────────────────────────────────────────────┘

好吧,让我们等待几秒钟并确保原始查询已成功终止。让我们通过以下系统信息架构查询来检查它:

SELECT "query_id", "query", "is_cancelled" FROM system.processes WHERE query_id = 'd02f4bdb-8928-4347-8641-4da4b9c0f486';

不幸的是,原始查询在某种意义上仍在运行。它变成了“is_cancelled”状态并且仍然挂起:

┌─query_id─────────────────────────────┬─query────────────────────────────────────────────────────────────────────────┬─is_cancelled─┐
│ d02f4bdb-8928-4347-8641-4da4b9c0f486 │ SELECT Count("SN".*) FROM (SELECT sleepEachRow(3) FROM system.numbers) "SN"; │            1 │
└──────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┴──────────────┘

等待了一个多小时,但仍然得到了一些结果。原始查询仍处于“is_cancelled”状态。具有相同 query_id 的后续 KILL 查询不会执行任何操作。

重启服务器很可能有助于解决问题,但我不想这样做。如何在不重新启动服务器的情况下解决查询卡住的问题?

最佳答案

ClickHouse 查询在 sleep 期间无法终止。

如果您使用的是最新的 CH 版本 (21.12+),则在处理每个 block 后将检查 KILL 标志(在较旧的版本上可能永远不会检查)。由于默认 block 是 65536,因此查询将在检查任何内容之前休眠 65536 * 3 秒 ~= 54 小时。

在 CH 的 future 版本中, sleep 时间将不可能超过 3 秒(目前这是 sleep 限制,但不是 sleepEachRow)。在此期间,您可以等待或重新启动服务器。

关于Clickhouse KILL QUERY 永远挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72364629/

相关文章:

sql - 如果列具有不同的行数(通过匹配名称),如何从列值中减去列值

database - 如何在 ClickHouse 中创建主键

clickhouse - 出现大量 "DB::NetException: Connection reset by peer, while reading from socket"错误,这些错误会产生大量噪音

hadoop - 是否可以配置clickhouse数据存储为hdfs

没有缓存的 Clickhouse 选择查询

linux -/bin/sh : 1: clickhouse: Operation not permitted

ubuntu - clickhouse 客户端不工作(或服务器)