`

PostgreSQL的“孔雀开屏”式程序架构

阅读更多

 

看着下面这个图, 就想到了“孔雀开屏”。从 main 开始经过细致、周密的准备, pg 启动了 postmaster 进程、系统日志进程、昙花一现的启动进程、后台写进程、写 WAL 日志进程、……,最后在服务器段抛出一句 database system is ready to accept connections ,开始准备对外提供服务。如果这时有客户端请求,就启动 postgres 服务进程提供服务。

main 开始,初始化内存上下文、设置时区、设置行政区时间、设置 SSL 、分配共享内存、在共享内存里初始化一系列对象和设施、设置文件描述、初始化后台进程列表、设置信号处理句柄、加载 hba 等文件,再加上共同的错误、日志处理模块、内部实现的 PG_TRY PG_CATCH PG_END_TRY ,各进程相同的内存管理机制,还有处理并发的锁机制等等,构成了“孔雀”的体,其中内存上下文每个 pg 进程都有一套,共享内存由所有进程共同使用。然后启动相关辅助进程和提供服务的 postgres 服务进程,构成了“孔雀开屏”的“屏”。如果给点并发,这个“屏”就开的更大更炫目了。加上做 IPC 的文件、管道、信号、共享内存等这些经络,这个“孔雀”活了。

Pg 的多进程架构经住了很多严苛场景的考验,如果把其中数据库相关业务逻辑干掉, pg 就可以是个不错的通用多进程程序架构,可以在上面填入自己的业务逻辑代码,少花好多精力得了一个非常棒的多进程架构,有需要的可以考虑。要是把 fork 换成 ThreadCreate 稍加改造, 这也是个很好的多线程程序架构。

 

“孔雀开屏”图

 

 

 

 

------------
转载请著明出处,来自博客:
blog.csdn.net/beiigang
beigang.iteye.com

  • 大小: 52.5 KB
0
0
分享到:
评论

相关推荐

    arm架构下的postgresql库文件

    在IT领域,尤其是在嵌入式系统中,ARM架构扮演...总结来说,这个知识点主要涵盖了在ARM架构上编译和部署PostgreSQL的流程,以及其与Poco库的兼容性,这对于在嵌入式设备或移动设备上构建数据库驱动的应用程序至关重要。

    Python编写PostgreSQL数据库结构比对程序源代码

    标题中的“Python编写PostgreSQL数据库结构比对程序源代码”意味着我们有一个用Python编写的工具,这个工具能够对比两个PostgreSQL数据库的结构,以检查它们是否一致。这在数据库迁移、升级或备份恢复等场景中非常...

    PostgreSQL9.5 架构图

    PostgreSQL9.5 架构图:包含了进程结构、缓存结构,表结构、wal日志结构等

    postgreSQL的ODBC驱动程序(X64)

    在Windows操作系统中,使用PostgreSQL的ODBC驱动程序可以让64位(X64)的应用程序无缝地与PostgreSQL数据库进行交互。 `upgrade_x64.bat` 文件很可能是一个批处理脚本,用于更新或安装PostgreSQL ODBC驱动程序的64...

    pgjdbc, PostgreSQL驱动程序驱动程序.zip

    pgjdbc, PostgreSQL驱动程序驱动程序 驱动程序PostgreSQL驱动程序( 短 PgJDBC ) 允许Java程序使用标准的数据库独立Java代码连接到PostgreSQL数据库。 是用纯 Java ( 类型 4 ) 编写的开放源码JDBC驱动程序,并在...

    PostgreSQL数据库列式存储cstore_fdw插件CStoreProcessUtility函数图.eddx

    PostgreSQL数据库的列式存储cstore_fdw 钩子函数CStoreProces的函数架构思维导图,详细分析请见我的博客:https://rng-songbaobao.blog.csdn.net/

    CynosDB for PostgreSQL 一主多读架构

    总的来说,CynosDB for PostgreSQL 的一主多读架构是应对大规模并发读取需求的有效解决方案。它结合了高可用性、读写分离、故障切换等特性,为Java开发者提供了稳定、高效的云数据库服务。在实际应用中,开发者需要...

    npgsql, Npgsql是PostgreSQL的.NET 数据提供程序.zip

    npgsql, Npgsql是PostgreSQL的.NET 数据提供程序 Npgsql -. NET 数据提供程序 什么是 Npgsql?Npgsql是用于PostgreSQL的.NET 数据提供程序。 它允许你使用. NET. 连接和与PostgreSQL服务器交互有关任何其他信息,请...

    CynosDB for PostgreSQL一主多读架构介绍.pptx

    以下是对 CynosDB for PostgreSQL 一主多读架构的详细说明: 1. **资源利用率低**:传统数据库往往难以充分利用硬件资源,而 CynosDB 通过计算存储分离的设计,实现了计算资源的弹性调度,可以根据业务需求动态调整...

    SpringBoot连接PostgreSql三层架构实现增改删

    在本项目中,我们主要探讨如何使用SpringBoot与MyBatis框架来构建一个基于PostgreSQL数据库的三层架构应用,实现数据的增、删、改、查功能。首先,让我们逐一了解涉及的关键技术点。 1. **SpringBoot**: ...

    postgresql分布式数据库架构

    PostgreSQL分布式数据库架构的知识点涵盖Postgres-XC项目的介绍、架构组件、性能与稳定性评估、当前实现的备注以及未来的发展路线图等。 1. PostgreSQL分布式数据库架构概述: Postgres-XC是一个开源项目,旨在提供...

    postgresql-provider, PostgreSQL网络框架的PostgreSQL提供程序.zip

    postgresql-provider, PostgreSQL网络框架的PostgreSQL提供程序 用于蒸汽的PostgreSQL ( PostgreSQL ) 提供商将PostgreSQL支持添加到Vapor框架。先决条件必须安装 PostgreSQL C 驱动程序才能使用这里软件包。按照 ...

    CynosDB for PostgreSQL一主多读架构设计.pptx

    总的来说,CynosDB for PostgreSQL通过创新的架构设计,如计算存储分离、日志下沉与异步回放,以及一主多读的副本策略,显著提升了云数据库的服务性能、可扩展性和可用性,降低了运维复杂度,为企业提供了更高效、更...

    postgresql-14.5.tar.gz

    postgresql-14.5.tar.gz安装包,postgresql-linux安装包,流行的关系型数据库,PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等,最大...

    数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB

    数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB 数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB 数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB

    PM PostgreSQL OLEDB:PostgreSQL OLEDB 提供程序-开源

    **PostgreSQL OLEDB 提供程序详解** 在 IT 领域,数据库管理系统的互操作性至关重要,PostgreSQL OLEDB 提供程序就是这样一款工具,它使得 Microsoft Windows 平台上的应用程序能够通过 OLE DB 接口访问 PostgreSQL...

    OLEDB驱动程序大全 PostgreSQL-OleDB-Provider

    在本话题中,我们将深入探讨“OLEDB驱动程序大全”中的一个特定组件——PostgreSQL OLEDB Provider。 PostgreSQL OLEDB Provider是用于连接和操作PostgreSQL数据库的OLEDB驱动程序。PostgreSQL是一种开源的关系型...

    postgreSQL的ODBC驱动程序(X64).zip

    本压缩包“PostgreSQL的ODBC驱动程序(X64).zip”提供了适用于64位操作系统的PostgreSQL ODBC驱动程序,以支持Java等应用与64位PostgreSQL服务器进行数据交互。 在压缩包内,我们有以下几个关键文件: 1. `...

    PostgreSQL数据库工程师培训实战教程(主从复制、高可用HA、集群架构)

    本教程将深入讲解PostgreSQL数据库工程师所需的技能,包括主从复制、高可用性(HA)以及集群架构等关键知识点。 1. **主从复制**: 主从复制是数据库高可用性的一种常见实现方式,它允许数据在主数据库(master)...

    PostgreSql ODBC驱动

    PostgreSQL ODBC驱动是连接PostgreSQL数据库的一种重要方式,它允许不同操作系统上的应用程序通过Open Database Connectivity (ODBC)标准来访问和操作PostgreSQL数据库。在Windows、Linux或macOS等系统上,ODBC驱动...

Global site tag (gtag.js) - Google Analytics