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 端仅取回需要的数据了。
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 端仅取回需要的数据了。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 从源码安装Mysql/Percona 5.5
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- PostgreSQL新手入门教程
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- PostgreSQL教程(十):性能提升技巧
- PostgreSQL教程(二):模式Schema详解
- PostgreSQL教程(十三):数据库管理详解