首页 > 解决方案 > 为每个读取查询定义优先级:使一些查询在后台运行

问题描述

我的问题如下:我为低延迟 Web UI 运行 clickhouse 集群,执行经典的 OLAP 查询,例如 SELECT ... WHERE ... GROUP BY ...

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

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

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

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

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

Clickhouse 中有什么东西能够定义这种优先级吗?

标签: 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.

推荐阅读