【发布时间】:2018-12-10 13:02:46
【问题描述】:
我观察到 Druid 查询性能可以从之前的查询中受益。因此,我试图了解原因。 我知道德鲁伊使用缓存(我在代理中使用缓存),但是这个缓存只存储每个段的查询结果(对吗?)。但是,我注意到如果后续查询使用相同的段,则性能会提高。
例子:
- 从表 x 中选择 sum(metric), dimteste2, dimteste3 where dimteste='x' group by dimteste2, dimteste3 -> 2 秒
- 从表 x 中选择 sum(metric), dimteste2, dimteste3 where dimteste3='y' group by dimteste2, dimteste3 -> 0.5 秒
我搜索了一下,发现这个行为可以通过OS页面缓存来实现。根据我的研究,我认为 Druid 在第一次查询数据源期间会将必要的段加载到内存(操作系统页面缓存)。并且在接下来的查询中可以更快地读取这些段。
我说的对吗? 我查看了 Druid 文档,但找不到任何有用的信息。
您能帮我解释一下这种令人敬畏的行为吗?
最好的问候,
何塞·科雷亚
【问题讨论】: