`

PostgreSQL服务过程中的那些事一:启动postgres服务进程二:建立连接完成

阅读更多

 

3

这节主要讨论 pg 服务进程 postgres 进程到了 PostgresMain 所有后台进程,交互或其它进程从这儿开始。

进入 PostgresMain 后,解析客户端命令行参数 dbname ;做文件、存储、缓存的初始化;设置合适的信号处理句柄;调用 InitPostgres 方法给 portgres 服务进程做相关初始化,这个方法里初始化了 relcache catcache ,初始化了执行查询计划的 portal 的管理器,填充本进程 PGPROC 结构相关部分成员等,这个方法做的事情较多并值得花点精力,后面单列一个主题讨论;删除 内存上下文 PostmasterContext (删除内存上下文的方法参见《 PostgresSQL 内存管理机制三: memcontext 删除》) ;判断当前进程是否 walsender 进程,如果不是, 创建内存上下文 "MessageContext" (创建内存上下文的方法参见《 PostgresSQL 内存管理机制三: AllocSet/MemoryContext 内存分配 》) ;任何,设置 错误跳跃重启点。然后进入无限循环,检查并处理任何请求或者最近收到的信号。 然后再接着循环。

进入无限循环后,切换到内存上下文 "MessageContext" 并清理干净该内存上下文;读取客户端命令;根据客户端各种命令分别进行处理。客户端命令分 Q P B E F C D H S X EOF d c f 这么多种,具体见“ PostgresMain 方法流程图”,有几种命令我也不确定对应什么 SQL 命令或操作,以后遇到再求证。

 

 

 

 

PostgresMain 方法的调用序列图

 

下面时 PostgresMain 流程图



 

PostgresMain 方法的流程图

 

 

后面根据一个简例简论简单查询分支,例子要是复杂点相应的解析树、查询树、计划树的图就大的看起来令人眼花缭乱。用这个例子走一边会把数据库系统实现中的编译器、分析器、优化器、执行器等几个数据库重要功能模块过一遍。





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

  • 大小: 105.9 KB
  • 大小: 81.3 KB
0
3
分享到:
评论

相关推荐

    PostgreSQL学习笔记搭建了Postgres在Windows上的编译调试环境.doc

    - "bootstrap":这部分代码用于初始化数据库模板,建立系统表,是PostgreSQL启动的基石。 - "main":检查命令行参数和标志,决定启动postmaster还是postgres进程。 - "postmaster":管理PostgreSQL服务器的启动和...

    PostgreSQL博客1

    1. **postgres主进程**:这是启动数据库集群的父进程,负责管理其他子进程,如背景工作者和服务进程。 2. **后台工作者**:包括检查点进程、归档进程、统计收集器、Wal Writer等,它们执行各种后台任务,确保数据库...

    postgresql远程连接

    本文将详细解析如何在Linux环境下,特别是RedHat系统中,实现PostgreSQL的远程连接配置过程,包括安装、配置及连接测试等关键步骤。 #### 安装PostgreSQL 首先,需要下载并解压PostgreSQL的源代码包。假设你已从...

    postgresql第二课:体系结构和特色用法1

    - **守护进程(postmaster)**:启动数据库服务,监听客户端连接并创建新的`postgres`进程。 - **postgres服务连接**:每个客户端连接都会产生一个。 - **辅助进程**:包括WAL Writer、Stats Collector、...

    将postgres 表结构和数据转换到sqllite数据库中的工具类源码

    1. **连接数据库**:使用JDBC(Java Database Connectivity)API,通过Spring Boot的数据源配置,建立与PostgreSQL和SQLite的连接。 2. **获取表结构**:通过SQL查询获取PostgreSQL中的表结构,包括字段名、数据...

    PostgreSQL 架构介绍1

    一旦连接建立成功,后续的所有操作都将在同一个会话中进行。 #### 二、物理结构 ##### 2.1 数据目录介绍 数据目录默认存储于 `$PGDATA` 中,该目录包含了所有与数据库相关的子目录和文件。具体来说: - **base**...

    PG技术分享,pg学习资料

    * 都使用共享内存的进程结构,客户端和数据库服务器建立一个连接后,数据库服务器就启动一个进程为这个连接服务。 * PG的wal日志与Oracle的Redo日志都是记录物理块数据变化的。 * PG有更多的支持互联网特征的功能,...

    Linux环境数据库管理员指南

    中使用 Postgres 270 9.22.1 启动 postmaster 270 9.22.2 使用 pg_options 270 9.22.3 认可的选项 271 9.23 安全 273 9.23.1 用户验证 273 9.23.2 基于主机的访问控制 273 9.23.3 验证方法 274 9.23.4 建立用户 275...

    nomnom.lockjaw::locked_with_key:PG咨询锁作为组件

    2. **初始化组件**:根据配置创建并启动`nomnom.lockjaw`组件,建立到PostgreSQL的连接。 3. **申请锁**:在需要使用锁的代码段之前,调用组件提供的函数来申请咨询锁。 4. **释放锁**:完成需要保护的操作后,确保...

Global site tag (gtag.js) - Google Analytics