为每个读取查询定义优先级:在后台进行一些查询 运行
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.
我的问题如下:我 运行 一个用于低延迟网络的 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.