postgresql整体架构和存储引擎的大体分析

前端之家收集整理的这篇文章主要介绍了postgresql整体架构和存储引擎的大体分析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我上网查阅了一些资料,读了一些相关论文。现对Postgresql整体架构进行粗略的剖析一下,供大家参考:

Postgresql的配置结构:Postgresql采用的是经典的C/S架构模型,主体是由一个守护监听进程Postmaster,若干个前端应用程序(比如Postgresql的客户端,DBMS等)和后段服务器进程(Postgresql服务器本身)所组成。大体宏观上的连接过程如下:前端数据库应用程序要访问数据库,首先要调用数据库应用连接接口库(libpq),根据我的理解,这个libpq可能是一些统一的接口,供第三方实现与Postgresql连接的组件(比如jdbc,odbc)之类,通过网络套接字进行连接,将连接请求发送给守护监听进程Postmaster,此后其启用一个新的后台服务器进程Postgresql与前端应用进行连接,此后前端应用与后台数据库之间的通信便不再通过Postmaster进行通信,可见Postmaster只是起到监听用户连接的作用。但是值得注意的是:根据一些相关资料,Postgresql采取的是单线程的方式来处理客户端所发来的命令。采取这种方案是由于历史因素所造成的。弊端在于:当系统对进程数有限制的时候,客户发来的请求过多时,会造成系统负载过大。导致执行速度变慢。

上面是对整体架构的一些论述,对于我研究的存储引擎模块:存储部分大致可以分为缓存管理以及外存管理两大子模块。

缓存管理:缓冲区最小的单位是页,由大量的页组成缓存区。缓存管理的源码大体架构如下:

storage/buffer下:

buf_init.c:初始化缓冲池,缓冲池的存取方式。

buf_table.c:定义了磁盘页面映射到缓冲区的哈希表以及相关的一些操作。

Bufmgr.c:缓冲区管理的接口,包括对缓冲区的一些操作:读取缓冲区,释放缓冲区,置页面位置为“脏”等。

freelist.c:管理缓冲池,以及缓冲池的替换策略。

Localbuf.c:管理本地缓冲区,本地临时表的快速缓冲区。

下面是页面管理的代码大体架构:

storage/page下:

bufpage.c:对于缓冲区页面的一些操作,如页面初始化,获得临时页面,修复页面段等。

Itemptr.c:磁盘项指针(根据我的理解,磁盘是以B树的形式进行管理的,这里可能是B树节点的指针)。

上面是今天所阅读的内容作的一些总结,希望大家分享一下给出意见,一起讨论。

参考资料和资源

大家好:

我把关于Postgresql的相关资料以及一些资源文件放上来,供大家下载。/Files/tjdx415/PostgreSQL分析器的研究.pdf/Files/tjdx415/PostgreSQL存储管理机制研究.pdf/Files/tjdx415/PostgreSQL数据库预取算法研究.pdf/Files/tjdx415/浅析Postgresql存储管理中共享缓冲区的管理.pdf/Files/tjdx415/表空间存储策略在PostgreSQL中的研究与实现.pdf/Files/tjdx415/postgreSQL数据库相关网站.doc

原文链接:https://www.f2er.com/postgresql/194939.html

猜你在找的Postgre SQL相关文章