1 .一种分布式数据库动态过滤方法,其特征在于,包括:
遍历分布式数据库的查询计划树,找到HashJoin;
在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将
所述过滤器标识记录在所述HashJoin的左表中;
将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述
过滤器标识生成过滤器;
将生成的过滤器沿着HashJoin的右表的节点逐级下推;
建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
使用过滤器对分布式数据库进行过滤。
2.如权利要求1所述分布式数据库动态过滤方法,其特征在于,所述在HashJoin的右表
中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,包括:
在HashJoin的右表中,递归的遍历各个节点,查找需要使用过滤器的第一节点并生成
过滤器标识,所述第一节点为scan节点或append节点;
查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生
成过滤器标识,所述第二节点为所述左表的上游节点中包含的聚集节点、跨网络的通信节
点或者右表中具有过滤效果的节点,所述具有过滤效果的节点为右表的输出行数和join的
结果行数的比值超过第一阈值的节点。
3 .如权利要求2所述分布式数据库动态过滤方法,其特征在于,所述在执行HashJoin的
过程中根据所述左表中记录的所述过滤器标识生成过滤器,包括:
根据所述过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤
器;
若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,
生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该第二节点的记录行数,
如果所述记录行数超过第二阈值,则将该第二节点的过滤器设置为空。
4 .如权利要求2所述分布式数据库动态过滤方法,其特征在于,所述将生成的过滤器沿
着HashJoin的右表的节点逐级下推,包括:
针对生成过滤器的第一节点,将过滤器信息存入该第一节点;
当生成过滤器的第二节点为跨网络的通信节点时,将过滤器发送至与该通信节点相关
联的节点;
当生成过滤器的第二节点为除跨网络的通信节点之外的其他节点时,将过滤器递归的
传递至下一节点。
5 .如权利要求3所述分布式数据库动态过滤方法,其特征在于,所述建立过滤器发送端
与过滤器接收端的通信链路,完成过滤器的发送和接收,包括:
当过滤器发送端启动时建立和过滤器接收端的通信链路;
由过滤器发送端依次向所有过滤器接收端发送该过滤器发送端对应的过滤器;
每个过滤器接收端接收到所有过滤器发送端发送的过滤器后,将接收的过滤器组合为
一个完整的过滤器;若所述过滤器接收端接收到空过滤器,则组合过滤器时将该空过滤器
舍弃。
权 利 要 求 书
1/2 页
2
评论