PostgreSQL查询引擎源码技术探析


概述

PostgreSQL作为关系数据库中学院派的代表,其由UC.Berkeley完成,postgreSQL代码具有简洁,结构清晰,浓重的学院派气息。虽然其在国内的使用并未像MySQL广泛的在互联网公司内部使用,但随着国内大家慢慢的对于PostgreSQL的认识,越来越多的公司慢慢的采用PostgreSQL作为其基础架构,更有很多公司在PostgreSQL基础上进行二次开发来完成自己的需求,例如:AsterData产品,GreenPlum产品等均是基于PostgreSQL基础之上进行架构来实现MPP应用,以及Alibaba云计算采用PostgreSQL作为构建RDB的基础构建。

作为数据库内核中的重要一环,查询引擎在数据库中处于“大脑“作用,一个查询语句是否是以最优的方式来执行,该数据库是否高效率的运行均与查询引擎有着密不可分的联系;不同的数据库对于同一条查询语句执行时间各不相同,有快有慢。除去存储引擎之间的差别外,不同查询引擎所生成的查询计划和执行计划的优劣直接影响数据库在对同一条查询所表现出的性能高低。例如:对于查询语句中的join,不同的查询引擎所产生的优化策略导致的执行时间可能相差数倍;

作为学院派的代表PostgreSQL有着一套复杂的查询优化策略,例如对于子链接的处理,基于代价的优化策略,基于规则的查询优化等等策略。对于这些策略,PostgreSQL系统给出了开放的接口,使得用户可以灵活的使用适用于特定应用场景的自有优化策略。例如:pg_rewrite中所描述的基于查询语法树的改写(Rewrite)规则,又如pg_rules等等。作为连接服务器层与存储引擎层的中间层,查询引擎将用户发送来的SQL语句按照gramm.y中预先定义的SQL语法规则生成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值