PostgreSQL数据库内核分析学习(一)

PostgreSQL 数据库由连接管理系统(系统控制器)、编译执行系统、存储管理系统、事务系统和系统表五大部分组成。

2.1系统表

  • 数据字典是关系数据库系统管理控制信息的核心

  • 在postgreSQL数据库系统中,系统表扮演数据字典的角色

  • 存放结构元数据,普通表、视图

  • 由SQL命令关联的系统表操作自动维护

  • 每一个数据库都有自己的一套系统表,来源于数据库创建时从模板数据库拷贝的,也有少数系统表是数据库共享的,表示的是所有数据库信息

2.1.1主要系统表功能及依赖关系

  • 当访问一个对象时,名字空间搜索顺序

  1. 特殊名字空间,仅用于创建模式

  2. 临时表的名字空间

    扫描二维码关注公众号,回复: 4000176 查看本文章
  3. 系统表的名字空间

  • 对象标识符(OID),用于整个数据库系统中唯一标识一个数据库对象,包括数据库、表、视图、索引等

  • pg_tablespace由同一个数据集簇内的所有数据共享,并不是每一个数据库都有自己的

2.1.2系统视图

2.2.1initdb的使用

  •  initdb用来初始化数据集簇的程序,负责创建数据库目录、系统表、模板数据库

  • 语法命令:initdb[option...] --pgdata | -D directory

  • 2.3 PostgreSQL进程结构

  • 最主要的两个进程是守护进程Postmaster和服务进程Postgres,守护进程负责整个系统的启动和关闭,监听并接受客户端的请求,分配服务进程。服务进程接受并执行客户端发送的命令

  • 守护进程启动后台辅助进程:Syslogger(系统日志进程)、PgStat(统计数据收集进程)、AutoVacuum(系统自动清理进程)

  • 在守护进程进入循环监听中时启动如下进程:BgWriter(后台写进程)、WalWriter(预写式日志进程)、PgArch(预写式日志归档进程)

  • POstmaster总是监听用户连接请求并未用户分配服务进程Postgres,而Postgres负责为客户端执行各种命令

2.4守护进程Postmaster

2.4.4信号处理函数pmdie

  1. Smart shutdown:等待所有子进程完成当前任务后在安全关闭系统,对应sigterm信号

  2. fast shutdown:向所有子进程发出sigterm信号,等待子进程接收到这个信号回滚当前事务并退出后再安全关闭系统,对应sigint信号

  3. immediate shutdown:向所有子进程发sigout信号,子进程马上退出,系统非正常关闭,对应sigout信号

2.5.1SysLogger系统日志进程

  • log_destination:配置日志输出目标

  • logging_filename:配置日志文件名称命名规则

  • logging_collector:是否开启日志收集器,on表示启动日志功能,否则系统不产生系统日志辅助进程

  • log_dirctory:配置日志输出文件夹

  • log_rotation_size:配置日志文件大小

猜你喜欢

转载自blog.csdn.net/jerry_kuan/article/details/81157339