返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

42.1. 查询经过的路径

发布于 2019-09-30 03:12:38 字数 861 浏览 1175 评论 0 收藏 0

下面是一个简短的描述,描述一个查询从开始到得到结果要经过的阶段。

  1. 首先必须先建立起从应用程序到 PostgreSQL 服务器的连接。应用程序向服务器发送查询然后接收从服务器返回的结果。

  2. 分析器阶段检查从应用程序(客户端)发送过来的查询,核对语法并创建一个查询树

  3. 重写系统接收分析阶段来的查询树且搜索任何应用到查询树上的规则(存储在系统表里),并根据给出的规则体进行转换。

    重写系统的一个应用就是实现视图。当一个查询访问一个视图时(也就是一个虚拟表),重写系统改写用户的查询,使之成为一个访问在视图定义里给出的对基本表的查询。

  4. 规划器/优化器接收(改写后的)查询树然后创建一个查询规划,这个查询规划是执行器的输入。

    它(规划器/优化器)首先创建所有得出相同结果的可能的路径。例如,如果待扫描的关系上有一个索引,那么扫描的路径就有两个。一个可能是简单的顺序查找,而另一个可能就是使用索引的查找。下一步是计算出不同路径的执行开销,并且选择和返回开销最少的那条。开销最小的路径然后会被展开成为一个可以供执行器使用的完整的查询规划。

  5. 执行器递归地走过规划树并且按照规划指定的方式检索数据行。执行器在对关系进行扫描时使用存储系统进行排序连接,计算条件并且最终交回生成的数据行。

在随后的小节里,将对上面的每一个步骤进行更详细的讨论,以便让对 PostgreSQL 的内部控制和数据结构有一个更准确的理解。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文