PostgreSQL 9.0 的构架
发布日期:2016-4-15 13:4:7
PostgreSQL 9.0 的构架 在这里我很高兴发布我的第一篇博客,是关于 PostgreSQL 构架的。 在之前很长一段时间里,我在工作、学习上都广泛地接触各种数据库,比如说mysql,redis等,但最感兴趣的还是PostgreSQL。作为一个初学者,想到尝试给出一张关于 PostgreSQL 的架构图。PostgreSQL构架包括几部分:内存、进程与文件存储系统,这难以在一张图里展示所有东西。我只有尽我所能地给出一个关于PostgreSQL构架的概要。 在我们的PostgreSQL提交者(Heikki,Robert Haas,Bruce)的帮助下完成了大部分的设计, 从他们身上我学习到了很多关于PostgreSQL内部的东西。 非常感谢他们,是他们的协作让我了解到关于PostgreSQL的一切。我不是黑客,也不是构架师,仅仅是为PostgreSQL新手写了一篇文章。请留下你的评论、建议或者发现到我写文章的任何错误也可留言。 图1 一、PostgreSQL 9.0 构架概述 PostgreSQL实例由一系列进程与内存组成。PostgreSQL 使用一个简单的 “每个用户一个进程” 的 客户/服务器 模型。PostgreSQL 有许多种类型进程。
当有一个客户端请求连接到数据库时,首先,请求被postmaster后台进程执行身份认证,受权之后会复制一个服务器后台进程(postgres进程)来处理该请求。从那时起,客户端进程和服务器端进程进程通信,而不再需要postmaster介入。因此,postmaster进程是一直在运行的,一直等待连接请求,然而客户端与服务器端进程会继续进行通信。libpq库允许一个单客户端连接到多个服务器进程。 然而,每个后台进程都是单线程的,一次仅仅只能执行一条查询;因此,任何的一个前端-后台连接都是单线程的。postmaster进程与postgres进程都是以PostgreSQL的”超级用户”身份的用户ID来运行的。每个打开数据库的会话里都会存在一个postgres进程。一旦经过身份验证的用户连接,它就会与共享内存直接连接(与谁,目的是做什么)。 二、内存
PostgreSQL共享内存是非常大的并且所有缓冲区都没有同步的,意味着这都是独立的。一些专家/提交者已经将他们的大量关于PostgreSQL的经验信息放在网站上。结合PostgreSQL文档与这个构架图就会对PostgreSQL构架的有个基础的了解。下面的链接有更多概述.
三、实用进程:
不久,我将会提交一张关于实用性进程与用户后台进程的概要图。若想要了解更多关于mysql的问题的朋友,也请期待 上一条: Mysql的几种语句标签 下一条: PostgreSQL 9.0 内存与进程
|