为每个读取查询定义优先级:在后台进行一些查询 运行

Defining priority for each read query: making some queries run in background

我的问题如下:我 运行 一个用于低延迟网络的 clickhouse 集群 UI 正在执行经典的 OLAP 查询,例如 SELECT ... WHERE ... GROUP BY 。 ..

这些查询中的大多数都非常快,从 10 毫秒到 1 秒,这是完美的。

然而,我还想将 clickhouse 用于更重的查询,例如使用字符串维度(例如 URL)或较慢的功能,如 SELECT DISTINCT(COUNT(...)),或者只是运行宁在一个非常大的周边(所有行)。

我的意思不是让这些查询更快,而是要避免它们通过使用集群的全部资源来减慢其他查询。

我可以想象这样一个基本的调度方法:

或任何其他更平滑的优先级方法。

Clickhouse 中是否有能够定义那种优先级的东西?

有这样的功能(不幸的是还没有记录):

:) select * from system.settings where name like '%priority%';

SELECT *
FROM system.settings
WHERE name LIKE '%priority%'

┌─name─────┬─value─┬─changed─┬─description───────────────────────────────────────────────────────────────────────────────────────┐
│ priority │ 0     │       0 │ Priority of the query. 1 - the highest, higher value - lower priority; 0 - do not use priorities. │
└──────────┴───────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec.