上图是postgresql的总体架构图,下边是图中几个主要模块的功能简述,希望研究相应模块的同学给出模块的功能简介。
Postmaster:它主要负责在客户端第一次发送请求给服务器的时候建立一个服务器断进程。也就是上图中的Listener。
(至今未发现postgresql中有listener,因此本图中的listener应该就是每一个客户端对应的服务器进程)postgre在完成建立服务器端进
程之后,就不再对客户端和服务器端的通信进行干涉。
Listener:也就是每个客户端对应的服务器端进程,它的主要作用是和客户端进行通信,获取客户端的sql语句,并把查询结果返回给客户
端。
Optimizer:查询优化器,主要功能是分析客户端提交的sql语句,给出所有的执行路径,并从中找出一个最优的方案,最后把这个执行方
案交给执行器。
Buffer Manager:缓冲管理器,主要功能是对共享缓冲区和本地缓存区进行管理。
1 、PostgreSOL 在安装后,其目录组织结构如下图:
2 、PostgreSQL 开发文档中给出的服务器体系结构图:
3 、PostgreSQL7.4.3 的体系结构,如下图所示:
l SQL 客户端接口负责在客户端和服务器端通信,对应服务器体系结构图中的libpq 。
l 系统控制管理器负责初始化和控制整个PostgreSQL 系统,对应服务器体系结构图中的Postmaster 和Postgres 。
l 查询引擎是最主要的子系统,负责解析、优化和执行处理客户端发来的请求,对应服务器体系结构图中由Parser 、Traffic Cop 、Rewrite 、Choose Path&Generate Plan 、Executor 和Utility Commands 组成的部分。
l 数据字典存储在系统关系中,存储着系统运行必要的信息和对象的定义信息,并提供处理创建删除对象的接口,对应服务器体系结构图的Catalog 。
l 存储管理器负责管理内存和磁盘,提供存取数据库的数据的功能,对应服务器体系结构图的Storage Managers 。
l 存取方法和事务管理器控制着逻辑的数据存取和数据库的ACID 特性实现,对应服务器体系结构图的Access Methos 。
l 库和实用工具程序为其他子系统提供功能上的支持对应服务器体系结构图的Utilities 和Nodes/Lists 。
4 、执行器模块介绍
执行器:接受规划器/ 优化器传过来地查询规划然后递归地处理它, 抽取所需要地行集合。执行器就是对应于上面所提到的查询引擎中的执行处理客户端发来的请求(Executor ),它是查询引擎的核心模块。
执行器实际上是一个需求-拉动地流水线机制。 每次调用一个规划节点地时候,它都必须给出更多的一个行,或者汇报它已经完成行的传递了。
针对不同的SQL 查询类型,执行器会有不同的执行方案,而这些方案的选择是按照执行器机制进行的。
(部分内容转自:清华大学亓伟申请专业学位论文)
姓名:吴冰 主题:执行器