德鲁伊:如何缓存内存中的所有历史节点数据

时间:2017-01-01 12:02:57

标签: druid

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

当我启动一个选择查询时,结果将在超过30个secondes中第一次返回。接下来,他们排在第二位(因为经纪人缓存)。

我担心的是减少第一次选择任何查询到一秒钟。为了达到这样的性能,我认为如果历史节点将所有数据存储在内存中,这是一个很好的开始。

问题:为了强制历史节点缓存内存中的所有数据,有哪些配置参数?

1 个答案:

答案 0 :(得分:1)

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

  1. 在历史节点缓存
  2. 代理节点缓存
  3. 页面缓存
  4. 前两个缓存是可配置的,可以根据需要打开/关闭,而页面缓存完全由底层操作系统控制。 因为在你的设置中你有很多可用的内存,我会建议你在启动时触发虚拟查询,这些查询跨越所有历史段,这会将所有段数据带入页面缓存中,并且稍后触发的任何查询都将从中受益。

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