[!WARNING] 本文档描述了Druid如何执行 原生查询,但是由于 Druid SQL 查询被转换为原生查询,因此本文档也适用于SQL运行时。有关如何将SQL查询转换为原生查询的信息,请参阅 SQL查询转换 页面。
Druid的查询执行方法因查询的 数据源类型 而异。
table
直接在 表数据源 上操作的查询使用由Broker进程引导的分散-聚集方法执行。过程如下:
"interval"
参数确定哪些 段 与查询相关。段总是按时间划分的,因此任何间隔与查询间隔重叠的段都可能是相关的。single_dim
partitionsSpec 按范围分区,并且过滤器与用于分区的维度匹配,则Broker还可以根据 "filter"
进一步修剪段列表。lookup
直接对 Lookup数据源(没有联接) 进行操作的查询使用查询的本地副本在接收查询的Broker上执行。所有注册的Lookup表都预加载到Broker的内存中。查询运行单线程。
使用Lookup作为联接的右端输入的查询的执行是以依赖于其"base"(最左下角)数据源的方式执行的,如下面的 join 部分所述。
union
直接在 union数据源 上操作的查询在Broker上被拆分为属于union的每个表的单独查询。这些查询中的每一个都单独运行,Broker将它们的结果合并在一起。
inline
直接在 内联数据源 上操作的查询在接收查询的Broker上执行。查询运行单线程。
使用内联数据源作为联接的右端输入的查询的执行方式取决于它们的"base"(最左下角)数据源,如下面的 join 部分所述。
query
[query数据源] 是子查询, 每个子查询都被当作它自己的查询来执行, 结果会返回给Broker。然后,Broker继续处理查询的其余部分,就像子查询被内联数据源替换一样。
在大多数情况下,子查询结果在其余查询继续之前在Broker上的内存中完全缓冲,这意味着子查询按顺序执行。以这种方式在给定查询的所有子查询中缓冲的行总数不能超过 druid.server.http.maxSubQueryRows 属性。
有一个例外:如果外部查询和所有子查询都是 groupBy 类型,则可以以流式方式处理子查询结果,并且 druid.server.http.maxSubQueryRows
限制不适用。
join
使用广播hash-join方法处理 联接数据源。
query
部分所述,并用inline数据源替换它们。Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )