`
gaojingsong
  • 浏览: 1182613 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【PostgreSQL数据库结构图】

阅读更多

一、PostgreSQL的结构


 

二、进程简介

pg的服务进程在操作系统中的名字都叫postgres,pg在多用户模式下启动后,用pidof postgres命令可以看到至少6个进程id。

但其实,pg的进程结构是:

单用户模式下只有1个进程postmaster

多用户模式下,有一个postmaster进程,它会启动几个辅助进程,如:

SysLogger(负责系统日志)

PgStat(负责收集数据的统计信息)

AutoVacuum(系统自动清理)

BgWriter(后台写进程)

WalWriter(预写式日志进程)

PgArch(预写式日志归档进程)

 

 

 

Potgres(常驻进程)

管理后端的常驻进程,也称为’postmaster’。其默认监听UNIX Domain Socket和TCP/IP(Windows等,一部分的平台只监听tcp/ip)的5432端口,等待来自前端的的连接处理。监听的端口号可以在PostgreSQL的设置文件postgresql.conf里面可以改。

一旦有前端连接过来,postgres会通过fork(2)生成子进程。没有Fork(2)的windows平台的话,则利用createProcess()生成新的进程。这种情形的话,和fork(2)不同的是,父进程的数据不会被继承过来,所以需要利用共享内存把父进程的数据继承过来。

Postgres(子进程)

子进程根据pg_hba.conf定义的安全策略来判断是否允许进行连接,根据策略,会拒绝某些特定的IP及网络,或者也可以只允许某些特定的用户或者对某些数据库进行连接。

Postgres会接受前端过来的查询,然后对数据库进行检索,最好把结果返回,有时也会对数据库进行更新。更新的数据同时还会记录在事务日志里面(PostgreSQL称为WAL日志),这个主要是当停电的时候,服务器当机,重新启动的时候进行恢复处理的时候使用的。另外,把日志归档保存起来,可在需要进行恢复的时候使用。在PostgreSQL 9.0以后,通过把WAL日志传送其他的postgreSQL,可以实时得进行数据库复制,这就是所谓的‘数据库复制’功能。

其他的进程

Postgres之外还有一些辅助的进程。这些进程都是由常驻postgres启动的进程。

Writer process

Writer process在适当的时间点把共享内存上的缓存写往磁盘。通过这个进程,可以防止在检查点的时候(checkpoint),大量的往磁盘写而导致性能恶化,使得服务器可以保持比较稳定的性能。Background writer起来以后就一直常驻内存,但是并非一直在工作,它会在工作一段时间后进行休眠,休眠的时间间隔通过postgresql.conf里面的参数bgwriter_delay设置,默认是200微秒。

这个进程的另外一个重要的功能是定期执行检查点(checkpoint)。

检查点的时候,会把共享内存上的缓存内容往数据库文件写,使得内存和文件的状态一致。通过这样,可以在系统崩溃的时候可以缩短从WAL恢复的时间,另外也可以防止WAL无限的增长。 可以通过postgresql.conf的checkpoint_segments、checkpoint_timeout指定执行检查点的时间间隔。

WAL writer process

WAL writer process把共享内存上的WAL缓存在适当的时间点往磁盘写,通过这样,可以减轻后端进程在写自己的WAL缓存时的压力,提高性能。另外,非同步提交设为true的时候,可以保证在一定的时间间隔内,把WAL缓存上的内容写入WAL日志文件。

Archive process

Archive process把WAL日志转移到归档日志里。如果保存了基础备份以及归档日志,即使实在磁盘完全损坏的时候,也可以回复数据库到最新的状态。

stats collector process

统计信息的收集进程。收集好统计表的访问次数,磁盘的访问次数等信息。收集到的信息除了能被autovaccum利用,还可以给其他数据库管理员作为数据库管理的参考信息。

Logger process

把postgresql的活动状态写到日志信息文件(并非事务日志),在指定的时间间隔里面,对日志文件进行rotate.

Autovacuum启动进程

autovacuum launcher process是依赖于postmaster间接启动vacuum进程。而其自身是不直接启动自动vacuum进程的。通过这样可以提高系统的可靠性。

自动vacuum进程

autovacuum worker process进程实际执行vacuum的任务。有时候会同时启动多个vacuum进程。

wal sender / wal receiver

wal sender 进程和wal receiver进程是实现postgresql复制(streaming replication)的进程。Wal sender进程通过网络传送WAL日志,而其他PostgreSQL实例的wal receiver进程则接收相应的日志。Wal receiver进程的宿主PostgreSQL(也称为Standby)接受到WAL日志后,在自身的数据库上还原,生成一个和发送端的PostgreSQL(也称为Master)完全一样的数据库。

  • 大小: 148.5 KB
0
1
分享到:
评论

相关推荐

    PostgreSQL 数据库集群和PL/Proxy配置安装指南PL/Proxy和PostgreSQL集群的结构关系可以用下图清楚地表示,对PL/Proxy和PostgreSQL集群还不太了解的朋友可以看Skype Plans for PostgreSQL to Scale to 1 Billion Users这篇文章。

    ### PostgreSQL 数据库集群与 PL/Proxy 的配置安装详解 #### 一、PostgreSQL 数据库集群概念 PostgreSQL 是一种开源的关系型数据库系统,以其强大的功能、稳定性和扩展性而受到广泛认可。对于需要处理大量数据或高...

    postgresql数据库备份和恢复

    在PostgreSQL数据库备份方面,通常的工具包括内置的客户端工具pgAdmin,它提供了用户图形界面来进行数据库的备份和恢复操作。然而,随着数据库规模的增长,直接使用pgAdmin进行操作可能变得不那么稳定和可靠,这就...

    使用PowerDesigner生成PostgreSQL数据库的物理数据模型

    - 使用“反向工程”功能(Reverse Engineering)来导入现有的PostgreSQL数据库结构。 - 在弹出的对话框中,选择合适的选项,如是否包含所有模式、表等。 - 点击“执行”按钮开始反向工程操作。 #### 生成物理...

    PostgreSQL数据库备份工具

    备份后的文件通常为`.sql`格式,这是一种文本格式,包含了创建数据库结构和插入数据的SQL语句。这些文件可以使用`psql`命令行工具或者PostgreSQL客户端工具导入,以恢复数据库。此外,有些工具还支持`.tar`或`.gz`...

    kettle访问PostgreSQL数据库并处理数据至execl文件环境搭建材料

    本篇文章将详细介绍如何使用Kettle访问PostgreSQL数据库,处理数据,并将其导出为Excel文件,同时也会提及Docker在搭建环境中的应用。 首先,PostgreSQL是一种开源的关系型数据库管理系统,以其强大的功能和稳定性...

    postgresql数据库安装包

    数据库是存储和管理数据的系统,而PostgreSQL作为ORM DBMS,允许开发者处理复杂的数据结构,如表格、视图、索引和函数。它的SQL方言兼容标准SQL,同时提供许多高级特性,如事务处理、并发控制、多版本并发控制(MVCC...

    PostgreSql+PostGis创建空间数据库

    2. 查看和修改数据库结构 3. 执行 SQL 语句 4. 查看和分析查询结果 使用 pgadmin 需要: 1. 在“开始”里找到 postgresql 程序,点击 pgAdmin III 2. 打开之后,双击 postgresql 9.2,输入之前设置的数据库超级...

    pgadmin3(postgresql数据库管理工具)

    2. **对象浏览器**: 展示数据库结构,包括数据库、表、视图、索引、函数等,便于查看和操作。 3. **SQL编辑器**: 提供了一个集成的SQL编辑器,可以编写、执行和保存SQL查询,支持自动补全和语法高亮。 4. **数据定义...

    Go-pgweb-一个基于web的PostgreSQL数据库浏览器

    【Go-pgweb:一个基于Web的PostgreSQL数据库浏览器】 Go-pgweb是一个用Go语言开发的轻量级、跨平台的Web应用程序,专门用于浏览和管理PostgreSQL数据库。它提供了一个用户友好的界面,使得数据库操作变得简单直观,...

    PostgreSQL数据库入门视频教程.rar

    此外,还会涉及DML(Data Manipulation Language)语句,如INSERT、UPDATE和DELETE,以及DDL(Data Definition Language)语句,用于定义数据库结构,如CREATE、ALTER和DROP。 视频中还会手把手教学如何使用...

    基于Postgresql数据库的课程设计----汽车客运管理系统

    摘要:为了提高汽车客运站管理工作效率,减少调度员工作量,及时准确地安排好...同时有每一个模块的数据流图,分E-R图,总E-R图,数据流图,数据流程图。要求高的还包括存储模式设计,游标设计,触发器,sql文件等等。

    postgresql空间数据库NN

    【标题】"postgresql空间数据库NN"涉及的知识点主要围绕PostgreSQL数据库系统以及其在处理空间数据方面的应用。PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它支持丰富的数据类型,包括支持地理空间...

    graph_in_postgresql:PostgreSQL数据库中的图形实现

    在PostgreSQL数据库中实现图形数据模型,是一种将传统的关系型数据与复杂网络结构相结合的方式,以处理具有丰富关联关系的数据。这种技术被称为图形数据库或图数据库,它利用节点、边和属性来表示实体和它们之间的...

    PostgreSQL数据库

    **PostgreSQL数据库详解** PostgreSQL,通常简称为Postgres,是一种功能强大的开源关系型数据库管理系统(RDBMS),在全球范围内广泛应用于各种规模的企业和组织。它以其高度的稳定性、安全性以及对复杂SQL查询的...

    基于golang和postgresql数据库的家族管理系统源码.zip

    基于Golang和PostgreSQL数据库的家族管理系统提供了一种高效、安全的方式来存储和检索家族成员信息,同时便于扩展和维护。本文将深入探讨这个系统的核心技术栈和关键设计思路。 首先,Golang(也称为Go)是Google...

    Navicat For Postgresql 10 绿色

    2. 数据库设计:提供图形化的数据库模型设计工具,支持ER图,帮助用户直观地理解数据库结构。用户可以创建、修改表结构,定义字段类型、长度、约束等属性,实现高效的数据建模。 3. 数据操作:Navicat提供了丰富的...

    基于PHP的VFront MySQL与PostgreSQL数据库前端管理工具 v0.95c.zip

    VFront是一款功能强大的数据库前端管理工具,专为MySQL和PostgreSQL数据库设计,它采用PHP语言开发,能够提供直观且用户友好的界面,帮助用户轻松执行常见的数据库操作。VFront v0.95c是该软件的一个版本,包含了多...

    Navicat for PostgreSQL 11.2

    2. 数据库设计:提供数据模型设计工具,支持ER图绘制,帮助用户直观地设计和优化数据库结构。 3. 数据操作:提供数据浏览、编辑、导入/导出等功能,支持SQL脚本执行,可进行复杂的数据查询和更新操作。 4. SQL编辑...

Global site tag (gtag.js) - Google Analytics