您的位置:首页 > 数据库

PostgresQL FDW 源码分析之总结

2016-07-02 22:35 441 查看
函数的阅读顺序如下:

1. FDW 先在 GetForeignRelSize() 中通过本地或向 remote 端查询的方式,得到了对 SQL 语句基本扫描方式的成本估算;

2. 然后在 postgresGetForeignPaths() 计算出各种情况的 plan path,包括基础扫描方法,和各种 join 方法,path 中带有对这种 plan 处理方式的描述和成本估算;

3. 在从多个 plan path 中选出一个 best path 后,在 postgresGetForeignPlan() 中,从这个 path 中恢复出需要在执行器执行的 SQL 语句;

4. 在 postgresBeginForeignScan() 中作一些资源申请等准备工作;

5. 最后在 postgresIterateForeignScan() 中,在 remote 建立要执行 SQL 语句的游标,然后通过游标取回查询结果。

要点:

1.  FDW 会区分 where 或 join 等限制条件,将能够发送到 remote 端的限制条件发送到 remote 端执行,此时就只需从 remote 端仅取回需要的数据了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息