Druid.IO系列简介之四:查询处理流程

Druid通过查询时间裁剪、内部索引识别和列访问优化,最大化查询性能。Broker检查并裁剪无用segment,向Historical/MiddleManager发送子查询,合并结果返回。采用时间裁剪、行级过滤和列级访问三种技术提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Broker负责接收查询请求,请求处理过程如下:

  1. Broker首先会检查哪些segment拥有可以用于处理该查询的数据,这时候会通过查询时间以及datasource的其他partition信息来裁剪掉没有用的segment;
  2. Broker会检查哪些Historical和MiddleManager进程拥有这些segment,并将子查询请求发送个这些相应的进程;
  3. Historical/MiddleManager进程执行所收到的子请求,处理完以后返回结果给borker;
  4. Broker收到结果以后合并所有查询结果,将合并后的查询结果返回给最初的请求者。

通过查询时间裁剪数据是Druid用来减少查询所需要数据扫描量的重要方式,Druid还通过其他方式来进一步减少查询所需要扫描的数据:查询所用的过滤条件是比时间更细粒度的裁剪机会,Druid会进一步利用内部的索引结果来找出符合过滤条件的行;然后找出需要被访问的列,在处理列时只会扫描符合条件的行,避免访问那些不符合过滤条件的数据。

总之,Druid采用三种不同的技术来最大化查询性能:

  • 根据查询时间,裁剪不需要被访问到的segment;
  • 在segment内部,使用索引识别符合查询条件的行;
  • 在segment内部,只访问那些被查询的列在符合条件的行上的数据。

本文翻译自:http://druid.io/docs/latest/design/

更多内容请访问:Druid.IO介绍系列之汇总篇

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值