Druid:如何在内存中缓存所有历史节点数据

Druid: how to cache all historical node data in memory

我在历史节点上存储了大约 10GB 的数据。但是该节点的内存消耗约为 2GB。

当我启动 select 查询时,结果在 30 多秒后首次返回。接下来,他们排在第二位(因为代理缓存)。

我关心的是将任何查询的第一次 select 时间减少到一秒。要达到这样的性能,我认为历史节点将所有数据存储在内存中是一个很好的开始。

问题:强制历史节点将所有数据缓存在内存中的配置参数是什么?

Druid 没有任何直接机制来强制数据 cached.To 解决此问题您可以尝试在启动时触发一些虚拟查询,这会将数据段加载到内存中。 启动德鲁伊查询时,有各种级别的缓存发挥作用:

  1. 在历史节点缓存
  2. 代理节点缓存
  3. 页面缓存

前两个缓存是可配置的,可以根据需要进行调整 on/off,而页面缓存完全由底层 OS 控制。 由于在您的设置中您在历史上有很多可用内存,我建议您在启动时触发虚拟查询,该查询跨越所有历史段,这会将所有段数据带入页面缓存,并且稍后触发的任何查询都将从中受益。

历史缓存和代理缓存不会缓存段的全部数据,而只会缓存每个段的查询结果,因此如果您的查询本质上非常动态并且需要不同的聚合和过滤器,这些缓存将无用每次。