WEB开发网
开发学院数据库DB2 在 WebSphere Federation Server V9.1 中异步执行... 阅读

在 WebSphere Federation Server V9.1 中异步执行联邦查询

 2009-12-24 00:00:00 来源:WEB开发网   
核心提示: SelectUS.prod_id,sum(US.sales)fromUS.SalesasUS,Europe.SalesasEUwhereUS.prod_id=EU.prod_idandUS.category='Beauty';访问计划可以建模为两个销售表的合并连接(Merge J

Select US.prod_id, sum(US.sales) 
from US.Sales as US, Europe.Sales as EU 
where US.prod_id = EU.prod_id 
and US.category = 'Beauty'; 

访问计划可以建模为两个销售表的合并连接(Merge Join,MGJN)。


图 4. 连接查询的访问计划
在 WebSphere Federation Server V9.1 中异步执行联邦查询

该访问计划假设,生成按 prod_id 排序的数据流的排序操作被推至(push down)到两个数据源。如果不采用异步方式,则访问计划中的 SHIP 操作符顺序地执行,分别访问对应的昵称并生成排序后的数据流。而 WFS 的异步执行特性则可以同时开始处理与 SHIP1 和 SHIP2 相关联的远程请求,从而帮助减少该查询的执行时间。

和 UNION 操作符一样,连接操作符本身是同步的,每次只能处理来自连接操作符某一个分支的输入。异步的优点是通过在远程数据源上重叠执行查询而取得的。

联邦查询要从异步中获益,下推到远程数据源并在远程数据源上异步执行的操作(查询)必须有以下特征:

远程查询比较复杂,需要消耗较多时间,必须在执行较长时间之后才能返回第一行数据。

远程查询返回相当少的行。

此外,如果远程查询都是执行大约相同一段时间之后返回第一行数据,那么异步带来的好处就可以实现最大化。

如何实现异步?

可以通过将操作符添加到支持可独立开始和处理的远程查询的执行计划来实现异步。在 DPF 系统中,修改后的 'Table Queue' (TQ) 操作符(称作 Asynchrony Table Queue,ATQ)操作符可用于同时发出远程请求。在运行时,执行计划中 ATQ 之下的任何操作符都是由一个单独的 db2agent 执行的,这个单独的 db2agent 被称作子代理(被实现为一个进程或一个线程,这取决于操作系统)。这种子代理允许 SHIP/RPD 在主查询开始的同时开始它的执行,从而可以实现远程查询的异步执行。ATQ 还提供有限的缓冲,以便 ATQ 可以将其下的 SHIP 或 RPD 操作符产生的部分结果存储在缓冲区,直到 ATQ 的消费者需要这些结果。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:WebSphere Federation Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接