zoukankan      html  css  js  c++  java
  • PostgreSQL进程和内存结构

     
     
    进程结构
    1、postgres server process是所有PostgreSQL数据库管理的父进程,在早期的版本种称为postmaster。
    (1)随着pg_ctl start,postgres server process也随之启动。
    (2)分配shared memory
    (3)启动一系列后台进程,复制相关的进程,后台工作者进程
    (4)当客户端连接的时候,通过调用操作系统命令fork()出一个backend process
    (5)监听数据库的端口
     
    2、backend process 负责处理客户端连接的请求处理。
    (1)必须指定要在连接到PostgreSQL服务器时显式使用的数据库,且只能指定一个db。
    (2)允许多个客户端同时连接PostgreSQL服务器,受参数max_connections控制,默认100
    (3)如果客户端频繁与服务器端建立和断开链接,增加建立连接和创建后端进程的成本,可使用连接池中间件(pgbouncer 或pgpool-II)进行连接复用。
    

      

    3、backgroud processes 是一系列各种功能特性的执行进程,比如vacuum,checkpoint等等。
    (1)background writer,共享内存中的脏页数据被有规律的定期持久化写入到磁盘,在pg9.1和之前版本还充当checkpoint的功能。
    (2)checkpointer,在9.2和之后的版本,执行检查点的过程。
    (3)autovacuum launcher 申请自动垃圾清理的创建
    (4)WAL writer 定期将WAL缓冲区上的WAL数据写入并刷新持久化到磁盘。
    (5)statistics collector 收集诸如pg_stat_activity和pg_stat_database等统计信息。
    (6)logger 将错误消息写入日志文件
    (7)archiver 归档日志
    

      

    4、replication associated processes 复制相关的进程
    (1)master端的walsender,
    (2)standby端的walreceiver。
    

      

    5、backgroud worker processes,
    (1)PostgreSQL启动时候可以通过模块中shared_preload_libraries包含的模块来初始化后台工作者进程。
    (2)可动态注册,注册的后台工作者的最大数量受max_worker_processes控制,默认为8。
    

      

    内存结构
    1、本地内存(类似于oracle的PGA),每个backend process 分配一个本地存储area,主要包括以下:
    work_mem :order by 和distinct操作对元组进行排序,通过merge-join和hash-join操作对表进行连接时使用
    maintenance_work_mem :某些维护操作(例如VACUUM,REINDEX)使用
    temp_buffers :临时表使用
    

      

    2、共享内存(类似于oracle的SGA),PostgreSQL服务器启动时将分配一个共享内存区域,主要包括以下:
    shared_buffers PostgreSQL对表或索引的操作都是在内存中进行的,如果访问的相关数据或者索引不在此区域,将从持久性存储加载到此处, 并直接对其进行操作。
    WAL buffer  是在写入磁盘之前WAL数据的缓冲区
    commit log  pg_xact记录所有事务的状态,事务进行中,已提交,已回滚。
    

      

  • 相关阅读:
    SpringBoot-07:SpringBoot整合PageHelper做多条件分页查询
    SpringBoot-06:SpringBoot增删改查一套完整的考试案例
    SpringBoot-05:SpringBoot初运行以及tomcat端口号的修改
    SpringBoot-04:SpringBoot在idea中的俩种创建方式
    SpringBoot-03:SpringBoot+Idea热部署
    SpringBoot-02:SpringBoot中的POM文件详细解释
    SpringBoot-01:什么是SpringBoot?
    SSM-Spring-23:概念《Spring中的事务是什么?》
    二叉查找树 & B(B-)树 & B+树 & B*树
    静态资源缓存与更新
  • 原文地址:https://www.cnblogs.com/imdba/p/13554507.html
Copyright © 2011-2022 走看看