定义每个读取查询的优先级:使某些查询在后台运行

时间:2018-09-17 16:23:23

标签: clickhouse

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

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

但是我还想使用Clickhouse进行更重的查询,例如使用字符串尺寸(例如URL)或功能较慢的功能(例如SELECT DISTINCT(COUNT(...))),或者仅在很大的边界上运行(所有行)

我的目的不是要使这些查询更快,而是要避免使用集群的全部资源来减慢其他查询的速度。

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

  • 使用全部资源开始繁琐的查询
  • 只要出现轻查询,就暂停重查询,然后运行轻查询完成,然后继续全力执行重查询

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

Clickhouse中是否有可以定义优先级的东西?

1 个答案:

答案 0 :(得分:2)

有这样的功能(不幸的是尚未记录):

:) 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.